This testcase fails with g++ --cut here-- typedef double EXPRESS[5];
extern int Terms; void Parse_Rel_Factor (EXPRESS Express, int *Terms) { EXPRESS Local_Express = {5.0, 4.0, 3.0, 2.0, 1.0}; int Local_Terms = 5; int i; for (i = (*Terms); i < Local_Terms; i++) Express[i] = 0.0; Express[i] += Local_Express[i]; } double Parse_Float () { EXPRESS Express = {1.0, 2.0, 3.0, 4.0, 5.0}; Parse_Rel_Factor (Express, &Terms); } --cut here-- g++ -O3 -msse2 -ftree-parallelize-loops=4 tt.cpp tt.cpp: In function âdouble Parse_Float()â: tt.cpp:18: error: invariant not recomputed when ADDR_EXPR changed &(*Express.105_26)[0]; tt.cpp:18: internal compiler error: verify_stmts failed Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. Please note, that the same testcase, renamed to __.c compiles OK with 'gcc -O3 -msse2 -ftree-parallelize-loops=4 -S tt.c'. [I guess that due to this, 'c++' component should be selected.] Also note, that if 'Express[i] += Local_Express[i];' line is removed, g++ segfaults trying to output diagnostics in: Program received signal SIGSEGV, Segmentation fault. 0x081165d8 in cp_diagnostic_starter (context=0x8a5e040, diagnostic=0xbf8874b0) at ../../gcc-svn/trunk/gcc/cp/error.c:2466 /home/uros/gcc-svn/trunk/gcc/cp/error.c:2466:64935:beg:0x81165d8 (gdb) bt #0 0x081165d8 in cp_diagnostic_starter (context=0x8a5e040, diagnostic=0xbf8874b0) at ../../gcc-svn/trunk/gcc/cp/error.c:2466 #1 0x082b9249 in diagnostic_report_diagnostic (context=0x8a5e040, diagnostic=0xbf8874b0) at ../../gcc-svn/trunk/gcc/diagnostic.c:421 #2 0x082b952a in error (gmsgid=0x893c52c "invariant not recomputed when ADDR_EXPR changed") at ../../gcc-svn/trunk/gcc/diagnostic.c:558 #3 0x084b3a51 in verify_expr (tp=0xb7c1c724, walk_subtrees=0xbf887568, data=0x0) at ../../gcc-svn/trunk/gcc/tree-cfg.c:3191 #4 0x0867544b in walk_tree_1 (tp=0xb7c1c724, func=0x84b2d50 <verify_expr>, data=0x0, pset=0x0, lh=0) at ../../gcc-svn/trunk/gcc/tree.c:8376 #5 0x0867557a in walk_tree_1 (tp=0xb7ccfdfc, func=0x84b2d50 <verify_expr>, data=0x0, pset=0x0, lh=0) at ../../gcc-svn/trunk/gcc/tree.c:8615 #6 0x0849ff1c in verify_stmts () at ../../gcc-svn/trunk/gcc/tree-cfg.c:4140 #7 0x085fb00f in verify_ssa (check_modified_stmt=1 '\001') at ../../gcc-svn/trunk/gcc/tree-ssa.c:613 #8 0x08411b25 in execute_function_todo (data=0x80000) at ../../gcc-svn/trunk/gcc/passes.c:963 #9 0x08411779 in do_per_function (callback=0x8411900 <execute_function_todo>, data=0x80000) at ../../gcc-svn/trunk/gcc/passes.c:805 #10 0x08411851 in execute_todo (flags=524288) at ../../gcc-svn/trunk/gcc/passes.c:989 #11 0x08411cda in execute_one_pass (pass=0x8a4f860) at ../../gcc-svn/trunk/gcc/passes.c:1081 -- Summary: ICE: invariant not recomputed when ADDR_EXPR changed with -ftree-parallelize-loops Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ubizjak at gmail dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34355