Viewing file: pr85095-2.c (1.37 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR target/85095 * /* { dg-do compile } */ /* { dg-options "-O2 -masm=att" } */
unsigned int f1 (unsigned int a, unsigned int b) { unsigned int i = __builtin_add_overflow (a, b, &a); return a + i; }
unsigned int f2 (unsigned int a, unsigned int b) { unsigned int i = __builtin_add_overflow (a, b, &a); return a - i; }
#ifdef __x86_64__ unsigned long long f3 (unsigned long long a, unsigned long long b) { unsigned long long i = __builtin_add_overflow (a, b, &a); return a + i; }
unsigned long long f4 (unsigned long long a, unsigned long long b) { unsigned long long i = __builtin_add_overflow (a, b, &a); return a - i; }
unsigned long long f5 (unsigned int a, unsigned int b) { unsigned int i = __builtin_add_overflow (a, b, &a); return a + i; }
unsigned long long f6 (unsigned int a, unsigned int b) { unsigned int i = __builtin_add_overflow (a, b, &a); return a - i; } #endif
/* { dg-final { scan-assembler-times "adcl\t\\\$0," 1 { target ia32 } } } */ /* { dg-final { scan-assembler-times "sbbl\t\\\$0," 1 { target ia32 } } } */ /* { dg-final { scan-assembler-times "adcl\t\\\$0," 2 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "sbbl\t\\\$0," 2 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "adcq\t\\\$0," 1 { target { ! ia32 } } } } */ /* { dg-final { scan-assembler-times "sbbq\t\\\$0," 1 { target { ! ia32 } } } } */
|