[Bug target/36782] [4.3/4.4 Regression] SH: spill failure in class 'R0_REGS' with -fpic
kkojima at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Jul 12 23:54:00 GMT 2008
------- Comment #3 from kkojima at gcc dot gnu dot org 2008-07-12 23:53 -------
I've added a reduced testcase and confirmed that 4.2.4 works too.
The RTL dumps show what is going on in the problematic case.
The backend creates a REG_EQUAL note for the GOT access and CSE
pass locates a memory access after the result is set to R0 according
to this note. Unfortunately this results a spill failure because
the above memory access requires R0 for reload.
The attached patch removes this note. I'll test it when 4.3/4.4
can be built for SH again.
--- ORIG/trunk/gcc/config/sh/sh.md 2008-04-27 13:53:04.000000000 +0900
+++ INTEST/trunk/gcc/config/sh/sh.md 2008-07-13 08:38:15.000000000 +0900
@@ -8880,9 +8880,6 @@ label:
/* ??? Should we have a special alias set for the GOT? */
insn = emit_move_insn (operands[0], mem);
- set_unique_reg_note (insn, REG_EQUAL,
- XVECEXP (XEXP (operands[1], 0), 0, 0));
-
DONE;
}")
--
kkojima at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kkojima at gcc dot gnu dot
| |org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |ice-on-valid-code
Known to fail| |4.3.1 4.4.0
Known to work| |4.2.4
Last reconfirmed|0000-00-00 00:00:00 |2008-07-12 23:53:41
date| |
Summary|php-5.2.5, error: unable to |[4.3/4.4 Regression] SH:
|find a register to spill in |spill failure in class
|class 'R0_REGS' |'R0_REGS' with -fpic
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36782
More information about the Gcc-bugs
mailing list