This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/55247] [4.8 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)
- From: "vmakarov at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 09 Nov 2012 19:42:30 +0000
- Subject: [Bug rtl-optimization/55247] [4.8 Regression] internal compiler error: Max. number of generated reload insns per insn is achieved (90)
- Auto-submitted: auto-generated
- References: <bug-55247-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55247
Vladimir Makarov <vmakarov at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ubizjak at gmail dot com
--- Comment #2 from Vladimir Makarov <vmakarov at redhat dot com> 2012-11-09 19:42:30 UTC ---
Here is the insn in question:
(insn 26 25 27 2 (set (reg:TI 115 [orig:100 *defsym_17 ] [100])
(mem:TI (zero_extend:DI (reg:SI 98)) [7 *defsym_17+0 S16 A32])) h.i:54
61 {*movti_internal_rex64}
As I understand the first alternative has ! to strongly encourage to use SSE
instead of GENERAL registers.
(define_insn "*movti_internal_rex64"
[(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,o ,x,x ,m")
(match_operand:TI 1 "general_operand" "riFo,riF,C,xm,x"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
For some reasons, the second alternative does not have !. I don't know why it
is different from the first alternative.
For reload it works as it already substituted hard register for the first
operand and in this case it rejects
the 2nd alternative.
(insn 26 25 27 2 (set (reg:TI 0 ax [orig:100 *defsym_17 ] [100])
(mem:TI (zero_extend:DI (reg:SI 2 cx [98])) [7 *defsym_17+0 S16 A32]))
h.i:54 61 {*movti_internal_rex64}
Adding ! for the second alternative (as I believe it should be) solves the
problem.
(define_insn "*movti_internal_rex64"
[(set (match_operand:TI 0 "nonimmediate_operand" "=!r ,!o ,x,x ,m")
(match_operand:TI 1 "general_operand" "riFo,riF,C,xm,x"))]
"TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
Uros, is this change ok for you? If it is ok I can commit the patch only on
Wednesday (I'll be away for a few days).