Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Misc / diag-macro-backtrace.c
blob0eb7bbb9f33551e1791ed5a93b1e673a5b821b00
1 // RUN: not %clang -fsyntax-only -fno-diagnostics-show-line-numbers -fmacro-backtrace-limit=0 %s 2>&1 | FileCheck %s
3 #define FOO 1+"hi"
4 #define BAR FOO
5 #define BAZ BAR
6 #define QUZ BAZ
7 #define TAZ QUZ
8 #define ABA TAZ
9 #define BAB ABA
10 #define ZAZ BAB
11 #define WAZ ZAZ
12 #define DROOL WAZ
13 #define FOOL DROOL
15 FOOL;
17 // CHECK: :15:1: error: expected identifier or '('
18 // CHECK: FOOL
19 // CHECK: ^
20 // CHECK: :13:14: note: expanded from macro 'FOOL'
21 // CHECK: #define FOOL DROOL
22 // CHECK: ^
23 // CHECK: :12:15: note: expanded from macro 'DROOL'
24 // CHECK: #define DROOL WAZ
25 // CHECK: ^
26 // CHECK: :11:13: note: expanded from macro 'WAZ'
27 // CHECK: #define WAZ ZAZ
28 // CHECK: ^
29 // CHECK: :10:13: note: expanded from macro 'ZAZ'
30 // CHECK: #define ZAZ BAB
31 // CHECK: ^
32 // CHECK: :9:13: note: expanded from macro 'BAB'
33 // CHECK: #define BAB ABA
34 // CHECK: ^
35 // CHECK: :8:13: note: expanded from macro 'ABA'
36 // CHECK: #define ABA TAZ
37 // CHECK: ^
38 // CHECK: :7:13: note: expanded from macro 'TAZ'
39 // CHECK: #define TAZ QUZ
40 // CHECK: ^
41 // CHECK: :6:13: note: expanded from macro 'QUZ'
42 // CHECK: #define QUZ BAZ
43 // CHECK: ^
44 // CHECK: :5:13: note: expanded from macro 'BAZ'
45 // CHECK: #define BAZ BAR
46 // CHECK: ^
47 // CHECK: :4:13: note: expanded from macro 'BAR'
48 // CHECK: #define BAR FOO
49 // CHECK: ^
50 // CHECK: :3:13: note: expanded from macro 'FOO'
51 // CHECK: #define FOO 1+"hi"
52 // CHECK: ^
54 #define ADD(a, b) a ## #b
55 ADD(L, foo)
56 // CHECK: error: expected identifier or '('
57 // CHECK: ADD(L, foo)
58 // CHECK: {{^\^}}
59 // CHECK: note: expanded from macro 'ADD'
60 // CHECK: #define ADD(a, b) a ## #b
61 // CHECK: {{^ \^}}
62 // CHECK: note: expanded from here
63 // CHECK: L"foo"
64 // CHECK: {{^\^}}
66 // CHECK: 2 errors generated.