This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/19304] New: wrong code for spec test from emit_move_change_mode
- From: "janis187 at us dot ibm dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 6 Jan 2005 23:37:44 -0000
- Subject: [Bug middle-end/19304] New: wrong code for spec test from emit_move_change_mode
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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 <rth@redhat.com>
* 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