diff options
author | Stuart Hastings <stuart@apple.com> | 2006-04-07 17:12:45 +0000 |
---|---|---|
committer | Stuart Hastings <stuart@apple.com> | 2006-04-07 17:12:45 +0000 |
commit | 7203d2580bd052f05a23c5ef57dfd9c1eabef997 (patch) | |
tree | 0870e9d92911483494a59b1240dcf2b43b8cc99a | |
parent | 8828957cb6a384649101f81664d0a65a11011990 (diff) |
Radar 4499627apple/gcc-5334
* gcc/config/i386/i386.md (gen_fix_trunc<mode>_i386_fisttp):
Remove 4209085 peephole.
* gcc.apple/4499627.c: New.
* gcc.apple/4209085.c: Remove.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/apple-local-200502-branch@112756 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog.apple-ppc | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 22 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog.apple-ppc | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.apple/4209085.c | 9 | ||||
-rw-r--r-- | gcc/testsuite/gcc.apple/4499627.c | 40 |
5 files changed, 52 insertions, 31 deletions
diff --git a/gcc/ChangeLog.apple-ppc b/gcc/ChangeLog.apple-ppc index d8dd4b4ee70..e2e45760cdd 100644 --- a/gcc/ChangeLog.apple-ppc +++ b/gcc/ChangeLog.apple-ppc @@ -1,3 +1,9 @@ +2006-04-06 Stuart Hastings <stuart@apple.com> + + Radar 4499627 + * gcc/config/i386/i386.md (gen_fix_trunc<mode>_i386_fisttp): + Remove 4209085 peephole. + 2006-03-30 Geoffrey Keating <geoffk@apple.com> Radar 4493694 diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ddedbbc375e..652e91a4c33 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4314,28 +4314,6 @@ [(set_attr "type" "fisttp") (set_attr "mode" "<MODE>")]) -;; APPLE LOCAL begin mainline 2005-10-25 4209085 -(define_peephole2 - [(set (match_operand:SSEMODEF 0 "memory_operand" "") - (match_operand:SSEMODEF 1 "register_operand" "")) - (set (match_operand:X87MODEI12 2 "register_operand" "") - (fix:X87MODEI12 (match_dup 0)))] - "TARGET_FISTTP - && peep2_reg_dead_p (1, operands[1]) - && STACK_TOP_P (operands[1])" - [(const_int 0)] -{ - rtx pat; - - operands[0] = adjust_address (operands[0], <MODE>mode, 0); - pat = gen_fix_trunc<mode>_i387_fisttp (operands[0], operands[1]); - XCEXP (XVECEXP (pat, 0, 1), 0, 0) = gen_rtx_REG (XFmode, FIRST_STACK_REG); - emit_insn (pat); - emit_move_insn (operands[2], operands[0]); - DONE; -}) -;; APPLE LOCAL end mainline 2005-10-25 4209085 - (define_split [(set (match_operand:X87MODEI 0 "register_operand" "") (fix:X87MODEI (match_operand 1 "register_operand" ""))) diff --git a/gcc/testsuite/ChangeLog.apple-ppc b/gcc/testsuite/ChangeLog.apple-ppc index 10b9229a330..272a3a85603 100644 --- a/gcc/testsuite/ChangeLog.apple-ppc +++ b/gcc/testsuite/ChangeLog.apple-ppc @@ -1,3 +1,9 @@ +2006-04-06 Stuart Hastings <stuart@apple.com> + + Radar 4499627 + * gcc.apple/4499627.c: New. + * gcc.apple/4209085.c: Remove. + 2006-03-28 Mike Stump <mrs@apple.com> * asm-array-ref.C, asm-block-1.C: Move from g++.dg to g++.apple. diff --git a/gcc/testsuite/gcc.apple/4209085.c b/gcc/testsuite/gcc.apple/4209085.c deleted file mode 100644 index 89463fe8613..00000000000 --- a/gcc/testsuite/gcc.apple/4209085.c +++ /dev/null @@ -1,9 +0,0 @@ -/* APPLE LOCAL file 4209085 */ -/* Generate fisttp if SSE3 is enabled */ -/* { dg-do compile { target i?86-*-darwin* } } */ -/* { dg-options "-O2 -msse3" } */ -double cos(double); -int main(void) { - return cos(1); -} -/* { dg-final { scan-assembler "fisttp" } } */ diff --git a/gcc/testsuite/gcc.apple/4499627.c b/gcc/testsuite/gcc.apple/4499627.c new file mode 100644 index 00000000000..a04a95de6bb --- /dev/null +++ b/gcc/testsuite/gcc.apple/4499627.c @@ -0,0 +1,40 @@ +/* APPLE LOCAL file 4499627 */ +/* { dg-do run { target i?86-*-darwin* } } */ +/* { dg-options "-Os -msse3" } */ +#include <stdlib.h> +#include <math.h> +int __attribute__ ((__noinline__)) +bar (int i) +{ + return i; +} + +void __attribute__ ((__noinline__)) +baz (int i) +{ + if (i != 4) + abort (); +} + +void __attribute__ ((__noinline__)) +foo (float ptm, float sw, float w, float h) { + int tbw, tbh; + float dx, dy, tx; + if (sw == 0.0f) /*label:*/ if (bar(sw) != -13 && (sw == 0.0f)) return ; + dx = (w < 1.0f) ? 1.0f : roundf(w); + dy = (h < 1.0f) ? 1.0f : roundf(h); + tx = dx + w; + tbw = dx; + tbh = dy; + if (tbw > 1 || tbh > 1) + baz (tx); + ptm *= dy; + bar(ptm); +} + +int +main () +{ + foo (0.0, -13.0, 2.0, 2.0); + return 0; +} |