diff options
author | Michael Collison <michael.collison@arm.com> | 2018-02-06 20:27:08 +0000 |
---|---|---|
committer | Michael Collison <collison@gcc.gnu.org> | 2018-02-06 20:27:08 +0000 |
commit | 86f697aaa6ac674da3d402c57a58bd2e99fb8cb1 (patch) | |
tree | e5c0d8b3ac84274daab555cefc52fdff6dbff869 /gcc | |
parent | 478a853e03cc6561f2698a17d98b332d6296c40e (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/thumb2.md | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/pr7676.c | 20 |
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); + } +} |