URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 149 |
Rev 154 |
/* PR middle-end/19551 */
|
/* PR middle-end/19551 */
|
|
|
extern void abort ();
|
extern void abort ();
|
|
|
#define T(type, name) \
|
#define T(type, name) \
|
__attribute__((pure)) _Complex type \
|
__attribute__((pure)) _Complex type \
|
foo_##name (int x) \
|
foo_##name (int x) \
|
{ \
|
{ \
|
_Complex type r; \
|
_Complex type r; \
|
__real r = x + 1; \
|
__real r = x + 1; \
|
__imag r = x - 1; \
|
__imag r = x - 1; \
|
return r; \
|
return r; \
|
} \
|
} \
|
\
|
\
|
void \
|
void \
|
bar_##name (type *x) \
|
bar_##name (type *x) \
|
{ \
|
{ \
|
*x = __real foo_##name (5); \
|
*x = __real foo_##name (5); \
|
} \
|
} \
|
\
|
\
|
void \
|
void \
|
baz_##name (type *x) \
|
baz_##name (type *x) \
|
{ \
|
{ \
|
*x = __imag foo_##name (5); \
|
*x = __imag foo_##name (5); \
|
}
|
}
|
|
|
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_##name (&var); \
|
bar_##name (&var); \
|
if (var != 6) \
|
if (var != 6) \
|
abort (); \
|
abort (); \
|
var = 0; \
|
var = 0; \
|
baz_##name (&var); \
|
baz_##name (&var); \
|
if (var != 4) \
|
if (var != 4) \
|
abort (); \
|
abort (); \
|
}
|
}
|
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.