diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2019-04-16 12:44:46 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2019-04-16 12:44:46 +0000 |
commit | 1ce6a0f5b05487678082f205d1b14a207adf9970 (patch) | |
tree | c409e115bd181377540b34531ab9dc62f872e152 /gcc | |
parent | b9bc3b128c02de33783a1729709cf44dd42bd05e (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/torture/pr86438.c | 2 |
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; } |