aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <uros@kss-loka.si>2005-10-17 09:09:24 +0200
committerUros Bizjak <uros@gcc.gnu.org>2005-10-17 09:09:24 +0200
commit99523994430c1e8e39c5b6864954b6bc03a81089 (patch)
tree2d26828f25294c00405720ad6b851599d01a1d1d
parentaf41c57d042d6b570c4f5de342e859f71bc67a18 (diff)
downloadgcc-99523994430c1e8e39c5b6864954b6bc03a81089.zip
gcc-99523994430c1e8e39c5b6864954b6bc03a81089.tar.gz
gcc-99523994430c1e8e39c5b6864954b6bc03a81089.tar.bz2
re PR target/24315 (amd64 fails -fpeephole2)
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.md15
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr24315.c9
4 files changed, 32 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d2d1caf..2b6eb4b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 849920e..3e417b5 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -1856,7 +1856,8 @@
(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))
@@ -2085,7 +2086,8 @@
(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))
@@ -10413,7 +10415,8 @@
(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;")
@@ -11167,7 +11170,8 @@
(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;")
@@ -11701,7 +11705,8 @@
(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;")
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 373a797..701122a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..dc6133e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr24315.c
@@ -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)));
+}