| /* { dg-do run } */ | |
| typedef __INT64_TYPE__ int64_t; | |
| typedef __INT32_TYPE__ int32_t; | |
| /* f() was misoptimized to a single "mul.d" instruction on LA64. */ | |
| __attribute__((noipa, noinline)) int64_t | |
| f(int64_t a, int64_t b) | |
| { | |
| return (int64_t)(int32_t)a * (int64_t)(int32_t)b; | |
| } | |
| int | |
| main() | |
| { | |
| int64_t a = 0x1145140000000001; | |
| int64_t b = 0x1919810000000001; | |
| if (f(a, b) != 1) | |
| __builtin_abort(); | |
| } |