/* { dg-do compile } */ | |
/* { dg-options "-O2 -mtune=generic" } */ | |
/* { dg-final { scan-assembler "adc" } } */ | |
/* { dg-final { scan-assembler-not "jmp" } } */ | |
typedef unsigned long u64; | |
typedef struct { | |
u64 hi, lo; | |
} u128; | |
static inline u128 add_u128 (u128 a, u128 b) | |
{ | |
a.hi += b.hi; | |
a.lo += b.lo; | |
if (a.lo < b.lo) | |
a.hi++; | |
return a; | |
} | |
extern u128 t1, t2, t3; | |
void foo (void) | |
{ | |
t1 = add_u128 (t1, t2); | |
t1 = add_u128 (t1, t3); | |
} |