]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR target/24315 (amd64 fails -fpeephole2)
authorUros Bizjak <uros@kss-loka.si>
Mon, 17 Oct 2005 07:09:24 +0000 (09:09 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 17 Oct 2005 07:09:24 +0000 (09:09 +0200)
PR target/24315
* config/i386/i386.md (*pushdi2_rex64 splitter)
(*movdi_1_rex64 splitter, *ashldi3_1 splitter)
(*ashrdi3_1 splitter, *lshrdi3_1 splitter): Delay splitting after
flow2 pass only when (optimize > 0 && flag_peephole2).

testsuite:

PR target/24315
* gcc.target/i386/pr24315.c: New test.

From-SVN: r105489

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr24315.c [new file with mode: 0644]

index d2d1caf78c34303d4fd03c3d0386f31d4296ddd6..2b6eb4b210f4d77ea9ee482f33fe95cba63b3580 100644 (file)
@@ -1,3 +1,11 @@
+2005-10-17  Uros Bizjak  <uros@kss-loka.si>
+
+       PR target/24315
+       * config/i386/i386.md (*pushdi2_rex64 splitter)
+       (*movdi_1_rex64 splitter, *ashldi3_1 splitter)
+       (*ashrdi3_1 splitter, *lshrdi3_1 splitter): Delay splitting after
+       flow2 pass only when (optimize > 0 && flag_peephole2).
+
 2005-10-16  Andrew Pinski  <pinskia@physics.uc.edu>
 
        PR driver/22544
index 849920e66d4e0dc1f1906e3fa7033fe5e2252887..3e417b500da9a061b2d69337bac3f79c7bf7adac 100644 (file)
 (define_split
   [(set (match_operand:DI 0 "push_operand" "")
         (match_operand:DI 1 "immediate_operand" ""))]
-  "TARGET_64BIT && (flag_peephole2 ? flow2_completed : reload_completed)
+  "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                   ? flow2_completed : reload_completed)
    && !symbolic_operand (operands[1], DImode)
    && !x86_64_immediate_operand (operands[1], DImode)"
   [(set (match_dup 0) (match_dup 1))
 (define_split
   [(set (match_operand:DI 0 "memory_operand" "")
         (match_operand:DI 1 "immediate_operand" ""))]
-  "TARGET_64BIT && (flag_peephole2 ? flow2_completed : reload_completed)
+  "TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                   ? flow2_completed : reload_completed)
    && !symbolic_operand (operands[1], DImode)
    && !x86_64_immediate_operand (operands[1], DImode)"
   [(set (match_dup 2) (match_dup 3))
        (ashift:DI (match_operand:DI 1 "nonmemory_operand" "")
                   (match_operand:QI 2 "nonmemory_operand" "")))
    (clobber (reg:CC FLAGS_REG))]
-  "!TARGET_64BIT && (flag_peephole2 ? flow2_completed : reload_completed)"
+  "!TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                    ? flow2_completed : reload_completed)"
   [(const_int 0)]
   "ix86_split_ashl (operands, NULL_RTX, DImode); DONE;")
 
        (ashiftrt:DI (match_operand:DI 1 "register_operand" "")
                     (match_operand:QI 2 "nonmemory_operand" "")))
    (clobber (reg:CC FLAGS_REG))]
-  "!TARGET_64BIT && (flag_peephole2 ? flow2_completed : reload_completed)"
+  "!TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                    ? flow2_completed : reload_completed)"
   [(const_int 0)]
   "ix86_split_ashr (operands, NULL_RTX, DImode); DONE;")
 
        (lshiftrt:DI (match_operand:DI 1 "register_operand" "")
                     (match_operand:QI 2 "nonmemory_operand" "")))
    (clobber (reg:CC FLAGS_REG))]
-  "!TARGET_64BIT && (flag_peephole2 ? flow2_completed : reload_completed)"
+  "!TARGET_64BIT && ((optimize > 0 && flag_peephole2)
+                    ? flow2_completed : reload_completed)"
   [(const_int 0)]
   "ix86_split_lshr (operands, NULL_RTX, DImode); DONE;")
 
index 373a7977a25b527fc52461d41f9ef3737d0396e9..701122a26fe4a53a7d3729446ed49483ead16993 100644 (file)
@@ -1,3 +1,8 @@
+2005-10-17  Uros Bizjak  <uros@kss-loka.si>
+
+       PR target/24315
+       * gcc.target/i386/pr24315.c: New test.
+
 2005-10-16  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/24389
diff --git a/gcc/testsuite/gcc.target/i386/pr24315.c b/gcc/testsuite/gcc.target/i386/pr24315.c
new file mode 100644 (file)
index 0000000..dc6133e
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR target/24315 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -fpeephole2" } */
+
+void s48_double_to_bignum (int exponent)
+{
+  long length = ((((exponent) + ((((sizeof (long)) * 8) - 2) - 1)) /
+                 (((sizeof (long)) * 8) - 2)));
+}