From: Zack Weinberg Date: Sun, 16 Jan 2000 17:53:02 +0000 (+0000) Subject: i386.md: Add peephole to merge successive stack adjusts. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=08439bec5f7e05cf133b4e7497bccedbe1210c35;p=gcc.git i386.md: Add peephole to merge successive stack adjusts. * config/i386/i386.md: Add peephole to merge successive stack adjusts. From-SVN: r31443 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3041ab04f49..62c417c9022 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-01-16 Zack Weinberg + + * config/i386/i386.md: Add peephole to merge successive stack + adjusts. + Sat Jan 15 15:41:14 EST 2000 John Wehle (john@feith.com) * gcse.c (insert_insn_end_bb): Use emit_block_insn_before diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 2f7aa6ab140..c7b01819a43 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -8947,6 +8947,25 @@ [(parallel [(set (match_dup 0) (ashift:SI (match_dup 0) (match_dup 2))) (clobber (reg:CC 17))])] "operands[2] = GEN_INT (exact_log2 (INTVAL (operands[1])));") + +;; Merge two successive stack adjusts. The combiner doesn't know how +;; to do this, and doesn't see all of them. +;; (reg:SI 7) is %esp. +(define_peephole2 + [(parallel[ + (set (reg:SI 7) + (plus:SI (reg:SI 7) (match_operand:SI 0 "const_int_operand" ""))) + (clobber (reg:CC 17))]) + (parallel[ + (set (reg:SI 7) + (plus:SI (reg:SI 7) (match_operand:SI 1 "const_int_operand" ""))) + (clobber (reg:CC 17))])] + "" + [(parallel[ + (set (reg:SI 7) + (plus:SI (reg:SI 7) (match_dup 2))) + (clobber (reg:CC 17))])] + "operands[2] = GEN_INT (INTVAL (operands[0]) + INTVAL (operands[1]));") ;; Call-value patterns last so that the wildcard operand does not ;; disrupt insn-recog's switch tables.