The following C testcase was reduced from a C++ benchmark: unsigned short status; void foo (const _Bool flag) { if (status == 2 || status == 7) { while (status != 2 && (status != 7 || !flag)) { } } }
After the merge of the tuples branch into mainline it gets the following ICE on powerpc-linux with -O3 or with the options shown here: elm3b149% /home/janis/tools/gcc-trunk-anonsvn/bin/gcc -c -O2 -funswitch-loops bug.c bug.c: In function foo: bug.c:4: internal compiler error: in gimple_cond_set_lhs, at gimple.h:2251 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. -- Summary: ICE in gimple_cond_set_lhs for -O2 -funswitch-loops after tuples merge Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: janis at gcc dot gnu dot org GCC target triplet: powerpc-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36978