Commit 1ce6a0f5 by Alexandre Oliva Committed by Alexandre Oliva

[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
parent b9bc3b12
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
......
......@@ -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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment