This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]