URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Go to most recent revision |
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
/* PR middle-end/19551 */
|
/* PR middle-end/19551 */
|
/* { dg-options "-O2" } */
|
/* { dg-options "-O2" } */
|
/* { dg-do link } */
|
/* { dg-do link } */
|
|
|
extern void abort ();
|
extern void abort ();
|
|
|
#define T(type, name) \
|
#define T(type, name) \
|
extern __attribute__((pure)) _Complex type \
|
extern __attribute__((pure)) _Complex type \
|
foo_c##name (int x); \
|
foo_c##name (int x); \
|
\
|
\
|
void \
|
void \
|
bar_c##name (type *x) \
|
bar_c##name (type *x) \
|
{ \
|
{ \
|
type f = __real foo_c##name (5); \
|
type f = __real foo_c##name (5); \
|
if (0) *x = f; \
|
if (0) *x = f; \
|
} \
|
} \
|
\
|
\
|
void \
|
void \
|
baz_c##name (type *x) \
|
baz_c##name (type *x) \
|
{ \
|
{ \
|
type f = __imag foo_c##name (5); \
|
type f = __imag foo_c##name (5); \
|
if (0) *x = f; \
|
if (0) *x = f; \
|
} \
|
} \
|
\
|
\
|
extern __attribute__((pure)) type \
|
extern __attribute__((pure)) type \
|
foo_##name (int x); \
|
foo_##name (int x); \
|
\
|
\
|
void \
|
void \
|
bar_##name (type *x) \
|
bar_##name (type *x) \
|
{ \
|
{ \
|
type f = foo_##name (5); \
|
type f = foo_##name (5); \
|
if (0) *x = f; \
|
if (0) *x = f; \
|
}
|
}
|
|
|
typedef long double ldouble_t;
|
typedef long double ldouble_t;
|
typedef long long llong;
|
typedef long long llong;
|
|
|
T (float, float)
|
T (float, float)
|
T (double, double)
|
T (double, double)
|
T (long double, ldouble_t)
|
T (long double, ldouble_t)
|
T (char, char)
|
T (char, char)
|
T (short, short)
|
T (short, short)
|
T (int, int)
|
T (int, int)
|
T (long, long)
|
T (long, long)
|
T (long long, llong)
|
T (long long, llong)
|
#undef T
|
#undef T
|
|
|
int
|
int
|
main (void)
|
main (void)
|
{
|
{
|
#define T(type, name) \
|
#define T(type, name) \
|
{ \
|
{ \
|
type var = 0; \
|
type var = 0; \
|
bar_c##name (&var); \
|
bar_c##name (&var); \
|
baz_c##name (&var); \
|
baz_c##name (&var); \
|
bar_##name (&var); \
|
bar_##name (&var); \
|
}
|
}
|
T (float, float)
|
T (float, float)
|
T (double, double)
|
T (double, double)
|
T (long double, ldouble_t)
|
T (long double, ldouble_t)
|
T (char, char)
|
T (char, char)
|
T (short, short)
|
T (short, short)
|
T (int, int)
|
T (int, int)
|
T (long, long)
|
T (long, long)
|
T (long long, llong)
|
T (long long, llong)
|
return 0;
|
return 0;
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.