summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc
diff options
context:
space:
mode:
authorOtto Moerbeek <otto@cvs.openbsd.org>2006-04-18 18:32:02 +0000
committerOtto Moerbeek <otto@cvs.openbsd.org>2006-04-18 18:32:02 +0000
commit4a876bf4f9db5c8cc334e88a8d7480d091b7dfad (patch)
tree38eb92c05df2a63caddbfc02d6d795184956038a /gnu/usr.bin/gcc
parentc6d0cb3804320d9e2ed2ad8f710263ef46dcc7db (diff)
Backport fix for gcc bug #10692. Fixes code generation for htons()
on i386 with -march=i686 -O2. Problem report and nice test program by chefren at pi dot net. Note that the fix is in non-target specific code, even while the gcc people classified this as a m68k bug. ok deraadt@
Diffstat (limited to 'gnu/usr.bin/gcc')
-rw-r--r--gnu/usr.bin/gcc/gcc/reload1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gnu/usr.bin/gcc/gcc/reload1.c b/gnu/usr.bin/gcc/gcc/reload1.c
index 69cdcf78ee3..35f6b6fc55e 100644
--- a/gnu/usr.bin/gcc/gcc/reload1.c
+++ b/gnu/usr.bin/gcc/gcc/reload1.c
@@ -6923,6 +6923,10 @@ do_input_reload (chain, rl, j)
actually no need to store the old value in it. */
if (optimize
+ /* Only attempt this for input reloads; for RELOAD_OTHER we miss
+ that there may be multiple uses of the previous output reload.
+ Restricting to RELOAD_FOR_INPUT is mostly paranoia. */
+ && rl->when_needed == RELOAD_FOR_INPUT
&& (reload_inherited[j] || reload_override_in[j])
&& rl->reg_rtx
&& GET_CODE (rl->reg_rtx) == REG