Benchmark 197.parser from SPEC CPU2000 fails on powerpc64-linux when compiled with "-m32 -O2 -maltivec" or "-m32 -O2 -funroll-loops", producing incorrect results. The failures start with this patch: 2004-12-12 Richard Henderson <[EMAIL PROTECTED]> * expr.c (emit_move_change_mode): New. (emit_move_via_alt_mode): Use it. I have no idea what's going on here but noticed that the original code handled more conditions than does the new code. If simplify_gen_subreg, rather than simplify_subreg, is called when reload_in_progress is true but MEM_P(x) is false, the test case passes again. I'll attach the diffs. If this looks worth testing I'll do a bootstrap and testsuite run and run the CPU2000 tests with the short test input using a variety of compiler options.
-- Summary: wrong code for spec test from emit_move_change_mode Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: janis187 at us dot ibm dot com CC: gcc-bugs at gcc dot gnu dot org,rth at gcc dot gnu dot org GCC target triplet: powerpc64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19304