middle-end: copy STMT_VINFO_STRIDED_P when DR is replaced [PR116956]
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr52451.c
blobaa19c1bc39a59895cef77e67f17fc62a921770b4
1 /* { dg-do run } */
2 /* { dg-add-options ieee } */
3 /* { dg-require-effective-target fenv_exceptions_long_double } */
4 /* { dg-skip-if "fenv" { powerpc-ibm-aix* } } */
6 #include <fenv.h>
8 #define TEST_C_NOEX(CMP, S) \
9 r = nan##S CMP arg##S; \
10 if (fetestexcept (FE_INVALID)) \
11 __builtin_abort ()
13 #define TEST_B_NOEX(FN, S) \
14 r = __builtin_##FN (nan##S, arg##S); \
15 if (fetestexcept (FE_INVALID)) \
16 __builtin_abort ()
18 #define TEST_C_EX(CMP, S) \
19 r = nan##S CMP arg##S; \
20 if (!fetestexcept (FE_INVALID)) \
21 __builtin_abort (); \
22 feclearexcept (FE_INVALID)
24 #define TEST(TYPE, S) \
25 volatile TYPE nan##S = __builtin_nan##S (""); \
26 volatile TYPE arg##S = 1.0##S; \
28 TEST_C_NOEX (==, S); \
29 TEST_C_NOEX (!=, S); \
31 TEST_B_NOEX (isgreater, S); \
32 TEST_B_NOEX (isless, S); \
33 TEST_B_NOEX (isgreaterequal, S); \
34 TEST_B_NOEX (islessequal, S); \
36 TEST_B_NOEX (islessgreater, S); \
37 TEST_B_NOEX (isunordered, S); \
39 TEST_C_EX (>, S); \
40 TEST_C_EX (<, S); \
41 TEST_C_EX (>=, S); \
42 TEST_C_EX (<=, S)
44 int
45 main (void)
47 volatile int r;
49 feclearexcept (FE_INVALID);
51 TEST (float, f);
52 TEST (double, );
53 #if !defined(__hppa__) || !defined(__hpux__)
54 /* Long double on hppa*-hpux* is implemented in software and the routines
55 in fenv.h do not support it. */
56 TEST (long double, l);
57 #endif
59 return 0;