On Fri, May 06, 2016 at 09:37:46AM +0200, Richard Biener wrote:
> 
> The following completes the fix for PR67921 now that we have a testcase
> for the non-pointer case.
> 
> Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

The testcase (for obvious reasons) fails on -funsigned-char defaulting
targets.  Plus, just theoretically, if int is 32-bits or larger, but
char is not 8-bit, it could fail as well.

Fixed thusly, committed as obvious.

2016-05-06  Jakub Jelinek  <ja...@redhat.com>

        PR middle-end/70941
        * gcc.dg/torture/pr70941.c (abort): Remove prototype.
        (a, b, c, d): Change type from char to signed char.
        (main): Compare against (signed char) -1634678893 instead of
        hardcoded -109.  Use __builtin_abort instead of abort.

--- gcc/testsuite/gcc.dg/torture/pr70941.c.jj   2016-05-06 15:09:06.000000000 
+0200
+++ gcc/testsuite/gcc.dg/torture/pr70941.c      2016-05-06 17:11:25.000000000 
+0200
@@ -1,14 +1,12 @@
 /* { dg-do run } */
 /* { dg-require-effective-target int32plus } */
 
-extern void abort (void);
-
-char a = 0, b = 0, c = 0, d = 0;
+signed char a = 0, b = 0, c = 0, d = 0;
 
 int main()
 {
   a = -(b - 405418259) - ((d && c) ^ 2040097152);
-  if (a != -109)
-    abort();
+  if (a != (signed char) -1634678893)
+    __builtin_abort ();
   return 0;
 }


        Jakub

Reply via email to