Richard Trieu | f11ab87 | 2017-02-11 00:52:01 +0000 | [diff] [blame^] | 1 | // RUN: %clang_cc1 -emit-llvm -debug-info-kind=line-tables-only -debug-info-macro %s -o - "-DC1(x)=( x + 5 )" -DA -include %S/Inputs/debug-info-macro.h -UC1 | FileCheck -check-prefixes=CHECK,NO_PCH %s |
| 2 | // RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -debug-info-macro %s -o - "-DC1(x)=( x + 5 )" -DA -include %S/Inputs/debug-info-macro.h -UC1 | FileCheck -check-prefixes=CHECK,NO_PCH %s |
| 3 | // RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -debug-info-macro %s -o - "-DC1(x)=( x + 5 )" -DA -include %S/Inputs/debug-info-macro.h -UC1 | FileCheck -check-prefixes=CHECK,NO_PCH %s |
| 4 | // RUN: %clang_cc1 -emit-llvm -debug-info-macro %s -o - "-DC1(x)=( x + 5 )" -DA -include %S/Inputs/debug-info-macro.h -UC1 | FileCheck -check-prefixes=NO_MACRO %s |
Amjad Aboud | 546bc11 | 2017-02-09 22:07:24 +0000 | [diff] [blame] | 5 | |
Richard Trieu | f11ab87 | 2017-02-11 00:52:01 +0000 | [diff] [blame^] | 6 | // RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -debug-info-macro %S/Inputs/debug-info-macro.h -emit-pch -o %t.pch -DC3 |
| 7 | // RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -debug-info-macro %s -o - -include-pch %t.pch "-DC1(x)=( x + 5 )" -DA -include %S/Inputs/debug-info-macro.h -UC1 | FileCheck -check-prefixes=CHECK,PCH %s |
Amjad Aboud | 546bc11 | 2017-02-09 22:07:24 +0000 | [diff] [blame] | 8 | |
| 9 | // This test checks that macro Debug info is correctly generated. |
| 10 | |
| 11 | // TODO: Check for an following entry once support macros defined in pch files. |
| 12 | // -PCH: !DIMacro(type: DW_MACINFO_define, name: "C3", value: "1")> |
| 13 | |
| 14 | #line 15 |
| 15 | /*Line 15*/ #define D1 1 |
Richard Trieu | f11ab87 | 2017-02-11 00:52:01 +0000 | [diff] [blame^] | 16 | /*Line 16*/ #include "Inputs/debug-info-macro.h" |
Amjad Aboud | 546bc11 | 2017-02-09 22:07:24 +0000 | [diff] [blame] | 17 | /*Line 17*/ #undef D1 |
| 18 | /*Line 18*/ #define D2 2 |
Richard Trieu | f11ab87 | 2017-02-11 00:52:01 +0000 | [diff] [blame^] | 19 | /*Line 19*/ #include "Inputs/debug-info-macro.h" |
Amjad Aboud | 546bc11 | 2017-02-09 22:07:24 +0000 | [diff] [blame] | 20 | /*Line 20*/ #undef D2 |
| 21 | |
| 22 | // NO_MACRO-NOT: macros |
| 23 | // NO_MACRO-NOT: DIMacro |
| 24 | // NO_MACRO-NOT: DIMacroFile |
| 25 | |
| 26 | // CHECK: !DICompileUnit({{.*}} macros: [[Macros:![0-9]+]]) |
| 27 | // CHECK: [[EmptyMD:![0-9]+]] = !{} |
| 28 | |
| 29 | // NO_PCH: [[Macros]] = !{[[MainMacroFile:![0-9]+]], [[BuiltinMacro:![0-9]+]], {{.*}}, [[DefineC1:![0-9]+]], [[DefineA:![0-9]+]], [[UndefC1:![0-9]+]]} |
| 30 | // PCH: [[Macros]] = !{[[MainMacroFile:![0-9]+]], [[DefineC1:![0-9]+]], [[DefineA:![0-9]+]], [[UndefC1:![0-9]+]]} |
| 31 | |
| 32 | // CHECK: [[MainMacroFile]] = !DIMacroFile(file: [[MainFile:![0-9]+]], nodes: [[N1:![0-9]+]]) |
| 33 | // CHECK: [[MainFile]] = !DIFile(filename: "{{.*}}debug-info-macro.c" |
| 34 | // CHECK: [[N1]] = !{[[CommandLineInclude:![0-9]+]], [[DefineD1:![0-9]+]], [[FileInclude1:![0-9]+]], [[UndefD1:![0-9]+]], [[DefineD2:![0-9]+]], [[FileInclude2:![0-9]+]], [[UndefD2:![0-9]+]]} |
| 35 | |
| 36 | // CHECK: [[CommandLineInclude]] = !DIMacroFile(file: [[HeaderFile:![0-9]+]], nodes: [[N2:![0-9]+]]) |
| 37 | // CHECK: [[HeaderFile]] = !DIFile(filename: "{{.*}}debug-info-macro.h" |
| 38 | // CHECK: [[N2]] = !{[[UndefA:![0-9]+]]} |
| 39 | // CHECK: [[UndefA]] = !DIMacro(type: DW_MACINFO_undef, line: 11, name: "A") |
| 40 | |
| 41 | // CHECK: [[DefineD1]] = !DIMacro(type: DW_MACINFO_define, line: 15, name: "D1", value: "1") |
| 42 | // CHECK: [[FileInclude1]] = !DIMacroFile(line: 16, file: [[HeaderFile]], nodes: [[N3:![0-9]+]]) |
| 43 | // CHECK: [[N3]] = !{[[DefineAx:![0-9]+]], [[UndefA]]} |
| 44 | // CHECK: [[DefineAx]] = !DIMacro(type: DW_MACINFO_define, line: 3, name: "A(x,y,z)", value: "(x)") |
| 45 | // CHECK: [[UndefD1]] = !DIMacro(type: DW_MACINFO_undef, line: 17, name: "D1") |
| 46 | |
| 47 | // CHECK: [[DefineD2]] = !DIMacro(type: DW_MACINFO_define, line: 18, name: "D2", value: "2") |
| 48 | // CHECK: [[FileInclude2]] = !DIMacroFile(line: 19, file: [[HeaderFile]], nodes: [[N4:![0-9]+]]) |
| 49 | // CHECK: [[N4]] = !{[[DefineAy:![0-9]+]], [[UndefA]]} |
| 50 | // CHECK: [[DefineAy]] = !DIMacro(type: DW_MACINFO_define, line: 7, name: "A(x,y,z)", value: "(y)") |
| 51 | // CHECK: [[UndefD2]] = !DIMacro(type: DW_MACINFO_undef, line: 20, name: "D2") |
| 52 | |
| 53 | // NO_PCH: [[BuiltinMacro]] = !DIMacro(type: DW_MACINFO_define, name: "__llvm__", value: "1") |
| 54 | |
| 55 | // CHECK: [[DefineC1]] = !DIMacro(type: DW_MACINFO_define, name: "C1(x)", value: "( x + 5 )") |
| 56 | // CHECK: [[DefineA]] = !DIMacro(type: DW_MACINFO_define, name: "A", value: "1") |
| 57 | // CHECK: [[UndefC1]] = !DIMacro(type: DW_MACINFO_undef, name: "C1") |