From 86f697aaa6ac674da3d402c57a58bd2e99fb8cb1 Mon Sep 17 00:00:00 2001 From: Michael Collison Date: Tue, 6 Feb 2018 20:27:08 +0000 Subject: [PATCH] 2018-02-06 Michael Collison * 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/thumb2.md | 4 ++-- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/arm/pr7676.c | 20 ++++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/arm/pr7676.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f203b6b7b7..c40d7e669cb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-06 Michael Collison + + * config/arm/thumb2.md: + (*thumb2_mov_negscc): Split only if TARGET_THUMB2 && !arm_restrict_it. + (*thumb_mov_notscc): Ditto. + 2018-02-06 Michael Meissner PR target/84154 diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 8eb20003ab2..c42670f8643 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 be9f3153c0d..14bcd624962 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-02-06 Michael Collison + + * gcc.target/arm/pr7676.c: New testcase for incorrect splitting. + 2018-02-06 Bill Schmidt * 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 00000000000..349d7a37124 --- /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); + } +} -- 2.30.2