xref: /aosp_15_r20/external/clang/test/Driver/phases.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Basic compilation for various types of files.
2*67e74705SXin Li // RUN: %clang -target i386-unknown-unknown -ccc-print-phases -x c %s -x objective-c %s -x c++ %s -x objective-c++ -x assembler %s -x assembler-with-cpp %s -x none %s 2>&1 | FileCheck -check-prefix=BASIC %s
3*67e74705SXin Li // BASIC: 0: input, "{{.*}}phases.c", c
4*67e74705SXin Li // BASIC: 1: preprocessor, {0}, cpp-output
5*67e74705SXin Li // BASIC: 2: compiler, {1}, ir
6*67e74705SXin Li // BASIC: 3: backend, {2}, assembler
7*67e74705SXin Li // BASIC: 4: assembler, {3}, object
8*67e74705SXin Li // BASIC: 5: input, "{{.*}}phases.c", objective-c
9*67e74705SXin Li // BASIC: 6: preprocessor, {5}, objective-c-cpp-output
10*67e74705SXin Li // BASIC: 7: compiler, {6}, ir
11*67e74705SXin Li // BASIC: 8: backend, {7}, assembler
12*67e74705SXin Li // BASIC: 9: assembler, {8}, object
13*67e74705SXin Li // BASIC: 10: input, "{{.*}}phases.c", c++
14*67e74705SXin Li // BASIC: 11: preprocessor, {10}, c++-cpp-output
15*67e74705SXin Li // BASIC: 12: compiler, {11}, ir
16*67e74705SXin Li // BASIC: 13: backend, {12}, assembler
17*67e74705SXin Li // BASIC: 14: assembler, {13}, object
18*67e74705SXin Li // BASIC: 15: input, "{{.*}}phases.c", assembler
19*67e74705SXin Li // BASIC: 16: assembler, {15}, object
20*67e74705SXin Li // BASIC: 17: input, "{{.*}}phases.c", assembler-with-cpp
21*67e74705SXin Li // BASIC: 18: preprocessor, {17}, assembler
22*67e74705SXin Li // BASIC: 19: assembler, {18}, object
23*67e74705SXin Li // BASIC: 20: input, "{{.*}}phases.c", c
24*67e74705SXin Li // BASIC: 21: preprocessor, {20}, cpp-output
25*67e74705SXin Li // BASIC: 22: compiler, {21}, ir
26*67e74705SXin Li // BASIC: 23: backend, {22}, assembler
27*67e74705SXin Li // BASIC: 24: assembler, {23}, object
28*67e74705SXin Li // BASIC: 25: linker, {4, 9, 14, 16, 19, 24}, image
29*67e74705SXin Li 
30*67e74705SXin Li // Universal linked image.
31*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -x c %s -arch ppc -arch i386 2>&1 | FileCheck -check-prefix=ULI %s
32*67e74705SXin Li // ULI: 0: input, "{{.*}}phases.c", c
33*67e74705SXin Li // ULI: 1: preprocessor, {0}, cpp-output
34*67e74705SXin Li // ULI: 2: compiler, {1}, ir
35*67e74705SXin Li // ULI: 3: backend, {2}, assembler
36*67e74705SXin Li // ULI: 4: assembler, {3}, object
37*67e74705SXin Li // ULI: 5: linker, {4}, image
38*67e74705SXin Li // ULI: 6: bind-arch, "ppc", {5}, image
39*67e74705SXin Li // ULI: 7: bind-arch, "i386", {5}, image
40*67e74705SXin Li // ULI: 8: lipo, {6, 7}, image
41*67e74705SXin Li 
42*67e74705SXin Li // Universal object file.
43*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x c %s -arch ppc -arch i386 2>&1 | FileCheck -check-prefix=UOF %s
44*67e74705SXin Li // UOF: 0: input, "{{.*}}phases.c", c
45*67e74705SXin Li // UOF: 1: preprocessor, {0}, cpp-output
46*67e74705SXin Li // UOF: 2: compiler, {1}, ir
47*67e74705SXin Li // UOF: 3: backend, {2}, assembler
48*67e74705SXin Li // UOF: 4: assembler, {3}, object
49*67e74705SXin Li // UOF: 5: bind-arch, "ppc", {4}, object
50*67e74705SXin Li // UOF: 6: bind-arch, "i386", {4}, object
51*67e74705SXin Li // UOF: 7: lipo, {5, 6}, object
52*67e74705SXin Li 
53*67e74705SXin Li // Arch defaulting
54*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x assembler %s 2>&1 | FileCheck -check-prefix=ARCH1 %s
55*67e74705SXin Li // ARCH1: 2: bind-arch, "i386", {1}, object
56*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c -x assembler %s -m32 -m64 2>&1 | FileCheck -check-prefix=ARCH2 %s
57*67e74705SXin Li // ARCH2: 2: bind-arch, "x86_64", {1}, object
58*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s 2>&1 | FileCheck -check-prefix=ARCH3 %s
59*67e74705SXin Li // ARCH3: 2: bind-arch, "x86_64", {1}, object
60*67e74705SXin Li // RUN: %clang -target x86_64-apple-darwin9 -ccc-print-phases -c -x assembler %s -m64 -m32 2>&1 | FileCheck -check-prefix=ARCH4 %s
61*67e74705SXin Li // ARCH4: 2: bind-arch, "i386", {1}, object
62*67e74705SXin Li 
63*67e74705SXin Li // Analyzer
64*67e74705SXin Li // RUN: %clang -target i386-unknown-unknown -ccc-print-phases --analyze %s 2>&1 | FileCheck -check-prefix=ANALYZE %s
65*67e74705SXin Li // ANALYZE: 0: input, "{{.*}}phases.c", c
66*67e74705SXin Li // ANALYZE: 1: preprocessor, {0}, cpp-output
67*67e74705SXin Li // ANALYZE: 2: analyzer, {1}, plist
68*67e74705SXin Li 
69*67e74705SXin Li // Precompiler
70*67e74705SXin Li // RUN: %clang -target i386-unknown-unknown -ccc-print-phases -x c-header %s 2>&1 | FileCheck -check-prefix=PCH %s
71*67e74705SXin Li // PCH: 0: input, "{{.*}}phases.c", c-header
72*67e74705SXin Li // PCH: 1: preprocessor, {0}, c-header-cpp-output
73*67e74705SXin Li // PCH: 2: precompiler, {1}, precompiled-header
74*67e74705SXin Li 
75*67e74705SXin Li // Darwin overrides the handling for .s
76*67e74705SXin Li // RUN: touch %t.s
77*67e74705SXin Li // RUN: %clang -target i386-unknown-unknown -ccc-print-phases -c %t.s 2>&1 | FileCheck -check-prefix=DARWIN1 %s
78*67e74705SXin Li // DARWIN1: 0: input, "{{.*}}.s", assembler
79*67e74705SXin Li // DARWIN1: 1: assembler, {0}, object
80*67e74705SXin Li // RUN: %clang -target i386-apple-darwin9 -ccc-print-phases -c %t.s 2>&1 | FileCheck -check-prefix=DARWIN2 %s
81*67e74705SXin Li // DARWIN2: 0: input, "{{.*}}.s", assembler-with-cpp
82*67e74705SXin Li // DARWIN2: 1: preprocessor, {0}, assembler
83*67e74705SXin Li // DARWIN2: 2: assembler, {1}, object
84*67e74705SXin Li 
85