aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Collison <michael.collison@arm.com>2018-02-06 20:27:08 +0000
committerMichael Collison <collison@gcc.gnu.org>2018-02-06 20:27:08 +0000
commit86f697aaa6ac674da3d402c57a58bd2e99fb8cb1 (patch)
treee5c0d8b3ac84274daab555cefc52fdff6dbff869 /gcc
parent478a853e03cc6561f2698a17d98b332d6296c40e (diff)
downloadgcc-86f697aaa6ac674da3d402c57a58bd2e99fb8cb1.zip
gcc-86f697aaa6ac674da3d402c57a58bd2e99fb8cb1.tar.gz
gcc-86f697aaa6ac674da3d402c57a58bd2e99fb8cb1.tar.bz2
2018-02-06 Michael Collison <michael.collison@arm.com>
* config/arm/thumb2.md: (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it. (*thumb_mov_notscc): Ditto. * gcc.target/arm/pr7676.c: New testcase. From-SVN: r257430
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/arm/thumb2.md4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/arm/pr7676.c20
4 files changed, 32 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2f203b6..c40d7e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-06 Michael Collison <michael.collison@arm.com>
+
+ * config/arm/thumb2.md:
+ (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it.
+ (*thumb_mov_notscc): Ditto.
+
2018-02-06 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84154
diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md
index 8eb2000..c42670f 100644
--- a/gcc/config/arm/thumb2.md
+++ b/gcc/config/arm/thumb2.md
@@ -362,7 +362,7 @@
[(match_operand 2 "cc_register" "") (const_int 0)])))]
"TARGET_THUMB2 && !arm_restrict_it"
"#" ; "ite\\t%D1\;mov%D1\\t%0, #0\;mvn%d1\\t%0, #0"
- "TARGET_THUMB2"
+ "&& true"
[(set (match_dup 0)
(if_then_else:SI (match_dup 1)
(match_dup 3)
@@ -410,7 +410,7 @@
[(match_operand 2 "cc_register" "") (const_int 0)])))]
"TARGET_THUMB2 && !arm_restrict_it"
"#" ; "ite\\t%D1\;mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
- "TARGET_THUMB2"
+ "&& true"
[(set (match_dup 0)
(if_then_else:SI (match_dup 1)
(match_dup 3)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index be9f315..14bcd62 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2018-02-06 Michael Collison <michael.collison@arm.com>
+
+ * gcc.target/arm/pr7676.c: New testcase for incorrect splitting.
+
2018-02-06 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* gcc.target/powerpc/safe-indirect-jump-1.c: Detect deprecation
diff --git a/gcc/testsuite/gcc.target/arm/pr7676.c b/gcc/testsuite/gcc.target/arm/pr7676.c
new file mode 100644
index 0000000..349d7a3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr7676.c
@@ -0,0 +1,20 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -march=armv8-a -mfloat-abi=soft -mthumb" } */
+/* { dg-skip-if "Do not combine float-abi= hard | soft | softfp" {*-*-*} {"-mfloat-abi=hard" -mfloat-abi=softfp } {""} } */
+int a;
+
+void fn2 (long long);
+
+void
+fn1 ()
+{
+ long long b;
+
+ for (;;)
+ {
+ b = ((a == (int)&fn1) <= 0 ^ 18446744073709551608ULL)
+ - 18446744073709551615ULL;
+
+ fn2 (b);
+ }
+}