aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2019-04-16 12:44:46 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2019-04-16 12:44:46 +0000
commit1ce6a0f5b05487678082f205d1b14a207adf9970 (patch)
treec409e115bd181377540b34531ab9dc62f872e152
parentb9bc3b128c02de33783a1729709cf44dd42bd05e (diff)
downloadgcc-1ce6a0f5b05487678082f205d1b14a207adf9970.zip
gcc-1ce6a0f5b05487678082f205d1b14a207adf9970.tar.gz
gcc-1ce6a0f5b05487678082f205d1b14a207adf9970.tar.bz2
[PR86438] avoid too-long shift in test
The test fell back to long long and long when __int128 is not available, but it assumed sizeof(long) < sizeof(long long) because of a shift count that would be out of range for a long long if their widths are the same. Fixed by splitting it up into two shifts. for gcc/testsuite/ChangeLog PR rtl-optimization/86438 * gcc.dg/torture/pr86438.c: Split up too-wide shift. From-SVN: r270388
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr86438.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index decbf08..7dc4f74 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2019-04-16 Alexandre Oliva <aoliva@redhat.com>
+
+ PR rtl-optimization/86438
+ * gcc.dg/torture/pr86438.c: Split up too-wide shift.
+
2019-04-16 Jakub Jelinek <jakub@redhat.com>
PR target/90096
diff --git a/gcc/testsuite/gcc.dg/torture/pr86438.c b/gcc/testsuite/gcc.dg/torture/pr86438.c
index 3e95515..5f8b463 100644
--- a/gcc/testsuite/gcc.dg/torture/pr86438.c
+++ b/gcc/testsuite/gcc.dg/torture/pr86438.c
@@ -24,6 +24,6 @@ main (void)
u64 d = (g ? 5 : 4);
u32 f = __builtin_sub_overflow_p (d, (u128) d, (u64) 0);
u128 x = g + f + d;
- check (x >> (sizeof (u64) * __CHAR_BIT__), x);
+ check ((x >> 1) >> (sizeof (u64) * __CHAR_BIT__ - 1), x);
return 0;
}