Viewing file: 20050121-2.c (1.15 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* PR middle-end/19551 */ /* { dg-options "-O2" } */ /* { dg-do link } */
extern void abort ();
#define T(type, name) \ extern __attribute__((pure)) _Complex type \ foo_c##name (int x); \ \ void \ bar_c##name (type *x) \ { \ type f = __real foo_c##name (5); \ if (0) *x = f; \ } \ \ void \ baz_c##name (type *x) \ { \ type f = __imag foo_c##name (5); \ if (0) *x = f; \ } \ \ extern __attribute__((pure)) type \ foo_##name (int x); \ \ void \ bar_##name (type *x) \ { \ type f = foo_##name (5); \ if (0) *x = f; \ }
typedef long double ldouble_t; typedef long long llong;
T (float, float) T (double, double) T (long double, ldouble_t) T (char, char) T (short, short) T (int, int) T (long, long) T (long long, llong) #undef T
int main (void) { #define T(type, name) \ { \ type var = 0; \ bar_c##name (&var); \ baz_c##name (&var); \ bar_##name (&var); \ } T (float, float) T (double, double) T (long double, ldouble_t) T (char, char) T (short, short) T (int, int) T (long, long) T (long long, llong) return 0; }
|