re PR rtl-optimization/81423 (Wrong code at -O2)
authorJakub Jelinek <jakub@redhat.com>
Sat, 14 Oct 2017 08:34:11 +0000 (10:34 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 14 Oct 2017 08:34:11 +0000 (10:34 +0200)
PR rtl-optimization/81423
* gcc.c-torture/execute/pr81423.c (foo): Add missing cast.  Change L
suffixes to LL.
(main): Punt if either long long isn't 64-bit or int isn't 32-bit.

From-SVN: r253749

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/pr81423.c

index c6419c7f8f177ce4bff11aaed7d83f640617b04c..c48f8a6f676478be713d4a6f051f7d27c1c069fd 100644 (file)
@@ -1,3 +1,10 @@
+2017-10-14  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/81423
+       * gcc.c-torture/execute/pr81423.c (foo): Add missing cast.  Change L
+       suffixes to LL.
+       (main): Punt if either long long isn't 64-bit or int isn't 32-bit.
+
 2017-10-13  Jakub Jelinek  <jakub@redhat.com>
 
        PR sanitizer/82353
index 731aa8f1c659c60751b8e0b5646e30c4d3da1f67..be7413be334aacd4e70c328a5df7cc935d4de601 100644 (file)
@@ -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 ();