aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2006-04-07 17:12:45 +0000
committerStuart Hastings <stuart@apple.com>2006-04-07 17:12:45 +0000
commit7203d2580bd052f05a23c5ef57dfd9c1eabef997 (patch)
tree0870e9d92911483494a59b1240dcf2b43b8cc99a
parent8828957cb6a384649101f81664d0a65a11011990 (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-ppc6
-rw-r--r--gcc/config/i386/i386.md22
-rw-r--r--gcc/testsuite/ChangeLog.apple-ppc6
-rw-r--r--gcc/testsuite/gcc.apple/4209085.c9
-rw-r--r--gcc/testsuite/gcc.apple/4499627.c40
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;
+}