This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/33151] Invalid insn with pre_inc
- From: "pinskia at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Aug 2007 22:39:47 -0000
- Subject: [Bug target/33151] Invalid insn with pre_inc
- References: <bug-33151-14936@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #2 from pinskia at gcc dot gnu dot org 2007-08-22 22:39 -------
What the auto pre-increment pass is doing looks ok from the point of view of
correct RTL.
Before:
(insn 22 21 70 4 t.c:11 (parallel [
(set (reg:DF 123 [ pretmp.23 ])
(float:DF (reg/v:SI 128 [ n ])))
(use (reg:SI 132))
(use (reg:DF 133))
(clobber (mem/c/i:DF (plus:SI (reg/f:SI 113 sfp)
(const_int 8 [0x8])) [2 S8 A64]))
(clobber (reg:DF 137))
(clobber (reg:SI 138))
]) 244 {*floatsidf2_internal} (expr_list:REG_DEAD (reg:DF 133)
(expr_list:REG_DEAD (reg:SI 132)
(expr_list:REG_UNUSED (reg:SI 138)
(expr_list:REG_UNUSED (reg:DF 137)
(expr_list:REG_EQUAL (float:DF (reg/v:SI 128 [ n ]))
(nil)))))))
(insn 70 22 24 4 t.c:6 (set (reg/f:SI 139)
(plus:SI (reg/f:SI 113 sfp)
(const_int 8 [0x8]))) 79 {*addsi3_internal1} (nil))
After:
(insn 80 21 22 4 t.c:11 (set (reg/f:SI 139)
(reg/f:SI 113 sfp)) -1 (nil))
(insn 22 80 24 4 t.c:11 (parallel [
(set (reg:DF 123 [ pretmp.23 ])
(float:DF (reg/v:SI 128 [ n ])))
(use (reg:SI 132))
(use (reg:DF 133))
(clobber (mem/c/i:DF (pre_inc:SI (reg/f:SI 139)) [2 S8 A64]))
(clobber (reg:DF 137))
(clobber (reg:SI 138))
]) 244 {*floatsidf2_internal} (expr_list:REG_INC (reg/f:SI 139)
(expr_list:REG_DEAD (reg:DF 133)
(expr_list:REG_DEAD (reg:SI 132)
(expr_list:REG_UNUSED (reg:SI 138)
(expr_list:REG_UNUSED (reg:DF 137)
(expr_list:REG_EQUAL (float:DF (reg/v:SI 128 [ n ]))
(nil))))))))
The semantics have not changed but we get an pre_inc inside the clobber now.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33151