https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68328

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to ktkachov from comment #8)
> The above testcase should be adjusted a bit for targets that have different
> char signedness than x86:
> int a, b, c = 1, d = 1, e;
> 
> __attribute__((noinline, noclone)) int
> foo (void)
> {
>   asm volatile ("" : : : "memory");
>   return 4195552;
> }
> 
> __attribute__((noinline, noclone)) void
> bar (int x, int y)
> {
>   asm volatile ("" : : "g" (x), "g" (y) : "memory");
>   if (y == 0)
>     __builtin_abort ();
> }
> 
> int
> baz (int x)
> {
>   char g, h;
>   int i, j;
> 
>   foo ();
>   for (;;)
>     {
>       if (c)
>         h = d;
>       g = h < x ? h : 0;
>       i = (signed char) ((unsigned char)(g - 120) ^ 1);
>       j = i > 97;
>       if (a - j)
>         bar (0x123456, 0);
>       if (!b)
>         return e;
>     }
> }
> 
> int
> main ()
> {
>   baz (2);
>   return 0;
> }

Just use signed char instead of char in the #c7 testcase instead?

Reply via email to