diff options
Diffstat (limited to 'gcc/testsuite/gcc.c-torture/execute/pr81423.c')
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr81423.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr81423.c b/gcc/testsuite/gcc.c-torture/execute/pr81423.c index 731aa8f1c65..be7413be334 100644 --- a/gcc/testsuite/gcc.c-torture/execute/pr81423.c +++ b/gcc/testsuite/gcc.c-torture/execute/pr81423.c @@ -1,3 +1,5 @@ +/* PR rtl-optimization/81423 */ + extern void abort (void); unsigned long long int ll = 0; @@ -10,11 +12,11 @@ foo (void) { ll = -5597998501375493990LL; - ll = (5677365550390624949L - ll) - (ull1 > 0); + ll = (unsigned int) (5677365550390624949LL - ll) - (ull1 > 0); unsigned long long int ull3; ull3 = (unsigned int) - (2067854353L << - (((ll + -2129105131L) ^ 10280750144413668236ULL) - + (2067854353LL << + (((ll + -2129105131LL) ^ 10280750144413668236ULL) - 10280750143997242009ULL)) >> ((2873442921854271231ULL | ull2) - 12098357307243495419ULL); @@ -24,9 +26,10 @@ foo (void) int main (void) { - /* We need a long long of exactly 64 bits for this test. */ - ll--; - if (ll != 0xffffffffffffffffULL) + /* We need a long long of exactly 64 bits and int of exactly 32 bits + for this test. */ + if (__SIZEOF_LONG_LONG__ * __CHAR_BIT__ != 64 + || __SIZEOF_INT__ * __CHAR_BIT__ != 32) return 0; ull3 = foo (); |