This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 14 Aug 2005 11:36:44 -0000
- Subject: [Bug rtl-optimization/23376] ICE on GCC 4.x with -O1 -funroll-loops -fvariable-expansion-in-unroller
- References: <20050813144850.23376.drab@kepler.fjfi.cvut.cz>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From steven at gcc dot gnu dot org 2005-08-14 11:36 -------
GCC tries to unroll and expand this insn:
(insn 28 26 30 2 (set (reg/v:V2SI 65 [ sum ])
(plus:V2SI (reg/v:V2SI 65 [ sum ])
(reg/v:V2SI 68 [ ref1 ]))) 1023 {mmx_addv2si3} (nil)
(nil))
But for some reason the force_operand call in combine_var_copies_in_loop_exit
returns NULL, in other words it fails to synthesize this insn in the unrolled
copies. At that point we have:
2088 expr = force_operand (sum, ve->reg);
(gdb) p debug_rtx(ve->insn)
(insn 28 26 30 2 (set (reg/v:V2SI 65 [ sum ])
(plus:V2SI (reg/v:V2SI 65 [ sum ])
(reg/v:V2SI 68 [ ref1 ]))) -1 (nil)
(nil))
$42 = void
(gdb) p debug_rtx(ve->reg)
(reg/v:V2SI 65 [ sum ])
$43 = void
(gdb) p debug_rtx(sum)
(plus:V2SI (reg:V2SI 76)
(reg/v:V2SI 65 [ sum ]))
$44 = void
(gdb)
2089 if (expr != ve->reg)
(gdb) p expr
$45 = 0x0
(gdb)
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23376