re PR tree-optimization/78482 (wrong code at -O3 in both 32-bit and 64-bit modes...
authorJakub Jelinek <jakub@redhat.com>
Wed, 23 Nov 2016 19:50:23 +0000 (20:50 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 23 Nov 2016 19:50:23 +0000 (20:50 +0100)
PR tree-optimization/78482
* gcc.dg/torture/pr78482.c (c, d): Use signed char instead of char.
(bar): New function.
(main): Call bar instead of printf.

From-SVN: r242794

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr78482.c

index 6c959289cf49dcd1ef852c9eef5e3adfad582891..317b4d101c96a8dddbd9039950d9e0e896b4ea40 100644 (file)
@@ -1,5 +1,10 @@
 2016-11-23  Jakub Jelinek  <jakub@redhat.com>
 
+       PR tree-optimization/78482
+       * gcc.dg/torture/pr78482.c (c, d): Use signed char instead of char.
+       (bar): New function.
+       (main): Call bar instead of printf.
+
        PR middle-end/69183
        * gfortran.dg/gomp/pr69183.f90: New test.
 
index ef68bdfbac2fe215075e1533369773dc737a54f1..cbf4d19d721a7ee2ad4447972d476b687b7d31e1 100644 (file)
@@ -1,9 +1,9 @@
+/* PR tree-optimization/78482 */
 /* { dg-do run } */
 
-int printf(const char*, ...);
 short a = 65531;
 int b = 3, f;
-char c, d;
+signed char c, d;
 static void fn1(int p1)
 {
   short e;
@@ -22,13 +22,22 @@ static void fn1(int p1)
     }
 }
 
+__attribute__((noinline, noclone))
+int bar (const char *x, int y)
+{
+  asm volatile ("" : "+g" (x), "+g" (y) : : "memory");
+  if (y == 2)
+    __builtin_abort ();
+  return 0;
+}
+
 int main()
 {
   for (; c >= 0; c--)
     {
       if (!b)
        {
-         printf("%d\n", 2);
+         bar("%d\n", 2);
          continue;
        }
       fn1(a);