Viewing file: pr93141-2.c (1.46 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR target/93141 */ /* { dg-do compile } */ /* { dg-options "-O2 -masm=att" } */ /* { dg-final { scan-assembler-not "cmp\[lq]\t" } } */ /* { dg-final { scan-assembler-not "adc\[lq]\t" } } */ /* { dg-final { scan-assembler-times "seto\t%" 7 } } */ /* { dg-final { scan-assembler-times "sbb\[lq]\t" 5 } } */
#ifdef __x86_64__ typedef unsigned __int128 U; typedef unsigned long long HU; typedef signed __int128 S; #else typedef unsigned long long U; typedef signed int HU; typedef signed long long S; #endif int o;
S qux (S x, S y) { S z; o = __builtin_sub_overflow (x, y, &z); return z; }
S quux (S x) { S z; o = __builtin_sub_overflow (x, ((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2), &z); return z; }
S corge (S x) { S z; o = __builtin_sub_overflow (x, (((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2)) | (S) 0xbeedead, &z); return z; }
S grault (S x) { S z; o = __builtin_sub_overflow (x, -((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2), &z); return z; }
S garply (S x) { S z; o = __builtin_sub_overflow (x, (-(((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2))) | (S) 0xbeedead, &z); return z; }
S waldo (S x) { S z; o = __builtin_sub_overflow (x, (S) ((((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2)) | -(HU) 0xbeedead), &z); return z; }
S fred (S x) { S z; o = __builtin_sub_overflow (x, (S) ((-(((S) 0xdeadbee) << (sizeof (S) * __CHAR_BIT__ / 2))) | -(HU) 0xbeedead), &z); return z; }
|