1 /* PR c/69405 - [6 Regression] ICE in c_tree_printer on an invalid
2 __atomic_fetch_add */
3 /* Test to verify that the diagnostic doesn't cause an ICE when any
4 of the arguments to __atomic_fetch_OP is undeclared. */
5 /* { dg-do compile } */
6
7 void test_add_undeclared_first_arg (void)
8 {
9 int a = 0;
10 __atomic_fetch_add (&a, &b, 0); /* { dg-error ".b. undeclared" } */
11 }
12
13 void test_sub_undeclared_first_arg (void)
14 {
15 int a = 0;
16 __atomic_fetch_sub (&a, &b, 0); /* { dg-error ".b. undeclared" } */
17 }
18
19 void test_or_undeclared_first_arg (void)
20 {
21 int a = 0;
22 __atomic_fetch_or (&a, &b, 0); /* { dg-error ".b. undeclared" } */
23 }
24
25 void test_and_undeclared_first_arg (void)
26 {
27 int a = 0;
28 __atomic_fetch_and (&a, &b, 0); /* { dg-error ".b. undeclared" } */
29 }
30
31 void test_xor_undeclared_first_arg (void)
32 {
33 int a = 0;
34 __atomic_fetch_xor (&a, &b, 0); /* { dg-error ".b. undeclared" } */
35 }
36
37 void test_nand_undeclared_first_arg (void)
38 {
39 int a = 0;
40 __atomic_fetch_nand (&a, &b, 0); /* { dg-error ".b. undeclared" } */
41 }
42
43
44 void test_add_undeclared_second_arg (void)
45 {
46 int b = 0;
47 __atomic_fetch_add (&a, &b, 0); /* { dg-error ".a. undeclared" } */
48 }
49
50 void test_sub_undeclared_second_arg (void)
51 {
52 int b = 0;
53 __atomic_fetch_sub (&a, &b, 0); /* { dg-error ".a. undeclared" } */
54 }
55
56 void test_or_undeclared_second_arg (void)
57 {
58 int b = 0;
59 __atomic_fetch_or (&a, &b, 0); /* { dg-error ".a. undeclared" } */
60 }
61
62 void test_and_undeclared_second_arg (void)
63 {
64 int b = 0;
65 __atomic_fetch_and (&a, &b, 0); /* { dg-error ".a. undeclared" } */
66 }
67
68 void test_xor_undeclared_second_arg (void)
69 {
70 int b = 0;
71 __atomic_fetch_xor (&a, &b, 0); /* { dg-error ".a. undeclared" } */
72 }
73
74 void test_nand_undeclared_second_arg (void)
75 {
76 int b = 0;
77 __atomic_fetch_nand (&a, &b, 0); /* { dg-error ".a. undeclared" } */
78 }
79
80
81 void test_add_undeclared_third_arg (void)
82 {
83 int a = 0, b = 0;
84 __atomic_fetch_add (&a, &b, m); /* { dg-error ".m. undeclared" } */
85 }
86
87 void test_sub_undeclared_third_arg (void)
88 {
89 int a = 0, b = 0;
90 __atomic_fetch_sub (&a, &b, m); /* { dg-error ".m. undeclared" } */
91 }
92
93 void test_or_undeclared_third_arg (void)
94 {
95 int a = 0, b = 0;
96 __atomic_fetch_or (&a, &b, m); /* { dg-error ".m. undeclared" } */
97 }
98
99 void test_and_undeclared_third_arg (void)
100 {
101 int a = 0, b = 0;
102 __atomic_fetch_and (&a, &b, m); /* { dg-error ".m. undeclared" } */
103 }
104
105 void test_xor_undeclared_third_arg (void)
106 {
107 int a = 0, b = 0;
108 __atomic_fetch_xor (&a, &b, m); /* { dg-error ".m. undeclared" } */
109 }
110
111 void test_nand_undeclared_third_arg (void)
112 {
113 int a = 0, b = 0;
114 __atomic_fetch_nand (&a, &b, m); /* { dg-error ".m. undeclared" } */
115 }