From: Richard Guenther Date: Sat, 5 Sep 2009 15:15:16 +0000 (+0000) Subject: re PR c++/41273 (ICE in add_virtual_operand, at tree-ssa-operands.c:638) X-Git-Tag: releases/gcc-4.5.0~3660 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=432b4b3129cd15f0971a0bbc9c1518d96ea6a4ae;p=thirdparty%2Fgcc.git re PR c++/41273 (ICE in add_virtual_operand, at tree-ssa-operands.c:638) 2009-09-05 Richard Guenther PR debug/41273 * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops. * g++.dg/torture/pr41273.C: New testcase. From-SVN: r151454 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8c927f7d3a7..9f2b7488a751 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2009-09-05 Richard Guenther + + PR debug/41273 + * tree-ssa-operands.c (get_tmr_operands): Pass through opf_no_vops. + 2009-09-05 Richard Guenther PR middle-end/41271 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cd4617183bb7..3373d071499f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-09-05 Richard Guenther + + PR debug/41273 + * g++.dg/torture/pr41273.C: New testcase. + 2009-09-05 Paul Thomas PR fortran/41258 diff --git a/gcc/testsuite/g++.dg/torture/pr41273.C b/gcc/testsuite/g++.dg/torture/pr41273.C new file mode 100644 index 000000000000..bdce05355837 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr41273.C @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-g" } */ + +long *H2_ipX_ener_sort; +double H2_old_populations[2]; +double H2_total; + +void H2_LevelPops() +{ + double sum_pop = 0.; + long nEner = 0; + while( nEner < 3 && sum_pop/H2_total < 0.99999 ) + { + long ip = H2_ipX_ener_sort[nEner]; + sum_pop += H2_old_populations[ip]; + ++nEner; + } +} diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c index ac84fb978b06..16f4a43dba32 100644 --- a/gcc/tree-ssa-operands.c +++ b/gcc/tree-ssa-operands.c @@ -735,8 +735,8 @@ static void get_tmr_operands (gimple stmt, tree expr, int flags) { /* First record the real operands. */ - get_expr_operands (stmt, &TMR_BASE (expr), opf_use); - get_expr_operands (stmt, &TMR_INDEX (expr), opf_use); + get_expr_operands (stmt, &TMR_BASE (expr), opf_use | (flags & opf_no_vops)); + get_expr_operands (stmt, &TMR_INDEX (expr), opf_use | (flags & opf_no_vops)); if (TMR_SYMBOL (expr)) mark_address_taken (TMR_SYMBOL (expr));