This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Minor fix to i386.md
- From: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner)
- To: gcc-patches at gcc dot gnu dot org
- Date: Thu, 22 Nov 01 06:52:13 EST
- Subject: Minor fix to i386.md
The "leave" pattern were wrong: they actually pop, not push, the stack.
However, using both a POST_INC of a register and using that register elsewhere
in the pattern is sort of like "i = i++" in C and a bad idea.
Thu Nov 22 06:49:14 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* config/i386/i386.md (leave, leave_rex64): Have RTL reflect what
insn actually does.
*** i386.md 2001/11/19 22:37:12 1.315
--- i386.md 2001/11/21 23:43:21
***************
*** 13715,13720 ****
(define_insn "leave"
! [(set (reg:SI 7) (reg:SI 6))
! (set (reg:SI 6) (mem:SI (pre_dec:SI (reg:SI 7))))
(clobber (mem:BLK (scratch)))]
"!TARGET_64BIT"
--- 13715,13720 ----
(define_insn "leave"
! [(set (reg:SI 7) (plus:SI (reg:SI 6) (const_int 4)))
! (set (reg:SI 6) (mem:SI (reg:SI 7)))
(clobber (mem:BLK (scratch)))]
"!TARGET_64BIT"
***************
*** 13728,13733 ****
(define_insn "leave_rex64"
! [(set (reg:DI 7) (reg:DI 6))
! (set (reg:DI 6) (mem:DI (pre_dec:DI (reg:DI 7))))
(clobber (mem:BLK (scratch)))]
"TARGET_64BIT"
--- 13728,13733 ----
(define_insn "leave_rex64"
! [(set (reg:DI 7) (plus:DI (reg:DI 6) (const_int 4)))
! (set (reg:DI 6) (mem:DI (reg:DI 7)))
(clobber (mem:BLK (scratch)))]
"TARGET_64BIT"