xref: /aosp_15_r20/external/clang/test/Sema/warn-extern-main.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST1
2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST2
3*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST3
4*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST4
5*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST5
6*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST6
7*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST7
8*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST8
9*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s -DTEST9 -ffreestanding
10*67e74705SXin Li 
11*67e74705SXin Li #if TEST1
12*67e74705SXin Li int main; // expected-warning{{variable named 'main' with external linkage has undefined behavior}}
13*67e74705SXin Li 
14*67e74705SXin Li #elif TEST2
15*67e74705SXin Li extern int main; // expected-warning{{variable named 'main' with external linkage has undefined behavior}}
16*67e74705SXin Li 
17*67e74705SXin Li #elif TEST3
18*67e74705SXin Li // expected-no-diagnostics
x()19*67e74705SXin Li void x() {
20*67e74705SXin Li   static int main;
21*67e74705SXin Li }
22*67e74705SXin Li 
23*67e74705SXin Li #elif TEST4
x()24*67e74705SXin Li void x() {
25*67e74705SXin Li   extern int main; // expected-warning{{variable named 'main' with external linkage has undefined behavior}}
26*67e74705SXin Li }
27*67e74705SXin Li 
28*67e74705SXin Li #elif TEST5
29*67e74705SXin Li // expected-no-diagnostics
x()30*67e74705SXin Li void x() {
31*67e74705SXin Li   int main;
32*67e74705SXin Li }
33*67e74705SXin Li 
34*67e74705SXin Li #elif TEST6
35*67e74705SXin Li // expected-no-diagnostics
36*67e74705SXin Li static int main;
37*67e74705SXin Li 
38*67e74705SXin Li #elif TEST7
39*67e74705SXin Li // expected-no-diagnostics
x()40*67e74705SXin Li void x() {
41*67e74705SXin Li   auto int main;
42*67e74705SXin Li }
43*67e74705SXin Li 
44*67e74705SXin Li #elif TEST8
45*67e74705SXin Li // expected-no-diagnostics
x()46*67e74705SXin Li void x() {
47*67e74705SXin Li   register int main;
48*67e74705SXin Li }
49*67e74705SXin Li 
50*67e74705SXin Li #elif TEST9
51*67e74705SXin Li // expected-no-diagnostics
52*67e74705SXin Li int main;
53*67e74705SXin Li 
54*67e74705SXin Li #else
55*67e74705SXin Li #error Unknown Test
56*67e74705SXin Li #endif
57