annotate gcc/testsuite/gcc.dg/torture/pr94439.c @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 /* { dg-additional-options "-flive-patching=inline-clone -funroll-loops -fno-tree-forwprop -fno-expensive-optimizations -mstack-arg-probe -fcompare-debug" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 /* { dg-skip-if "" { *-*-* } { "-flto" } { "" } } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 extern void exit (int);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 extern void abort (void);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 #define COMPARE_BODY(A, B, TYPE, COPYSIGN) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 do { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 TYPE s1 = COPYSIGN ((TYPE) 1.0, A); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 TYPE s2 = COPYSIGN ((TYPE) 1.0, B); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 if (s1 != s2) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 abort (); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 if ((__builtin_isnan (A) != 0) != (__builtin_isnan (B) != 0)) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 abort (); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 if ((A != B) != (__builtin_isnan (A) != 0)) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 abort (); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 } while (0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 comparel (long double a, long double b)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 COMPARE_BODY (a, b, long double, __builtin_copysignl);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 comparecl (_Complex long double a, long double r, long double i)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 comparel (__real__ a, r);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 comparel (__imag__ a, i);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 #define VERIFY(A, B, TYPE, COMPARE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 do { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 TYPE a = A; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 TYPE b = B; \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 _Complex TYPE cr = __builtin_complex (a, b); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 static _Complex TYPE cs = __builtin_complex (A, B); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 COMPARE (cr, A, B); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 COMPARE (cs, A, B); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 } while (0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 #define ALL_CHECKS(PZ, NZ, NAN, INF, TYPE, COMPARE) \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 do { \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 VERIFY (NAN, NZ, TYPE, COMPARE); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 VERIFY (INF, NZ, TYPE, COMPARE); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 VERIFY (INF, NAN, TYPE, COMPARE); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 VERIFY (INF, INF, TYPE, COMPARE); \
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 } while (0)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 check_long_double (void)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54 ALL_CHECKS (0.0l, -0.0l, __builtin_nanl(""), __builtin_infl(), long double, comparecl);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 }