66// - Generation of their '_vtable$' data members:
77// * Correct scope and attributes
88
9- #include " Inputs/vtable-debug-info-inheritance-simple-base.h"
10- #include " Inputs/vtable-debug-info-inheritance-simple-derived.h"
9+ #ifdef BASE_CODE
10+ #define BASE_DEF
11+ #endif
12+
13+ #ifdef DERIVED_CODE
14+ #define BASE_DEF
15+ #define DERIVED_DEF
16+ #endif
17+
18+ #ifdef MAIN_CODE
19+ #define BASE_DEF
20+ #define DERIVED_DEF
21+ #endif
22+
23+ #ifdef BASE_DEF
24+ namespace NSP {
25+ struct CBase {
26+ unsigned B = 1 ;
27+ virtual void zero ();
28+ virtual int one ();
29+ virtual int two ();
30+ virtual int three ();
31+ };
32+ }
33+ extern void fooBase ();
34+ #endif
35+
36+ #ifdef BASE_CODE
37+ void NSP::CBase::zero () {}
38+ int NSP::CBase::one () { return 1 ; }
39+ int NSP::CBase::two () { return 2 ; };
40+ int NSP::CBase::three () { return 3 ; }
1141
42+ #ifdef SYMBOL_AT_FILE_SCOPE
43+ static NSP::CBase Base;
44+ #else
45+ void fooBase () {
46+ NSP::CBase Base;
47+ }
48+ #endif
49+ #endif
50+
51+ #ifdef DERIVED_DEF
52+ struct CDerived : NSP::CBase {
53+ unsigned D = 2 ;
54+ void zero () override ;
55+ int two () override ;
56+ int three () override ;
57+ };
58+ extern void fooDerived ();
59+ #endif
60+
61+ #ifdef DERIVED_CODE
62+ void CDerived::zero () {}
63+ int CDerived::two () { return 22 ; };
64+ int CDerived::three () { return 33 ; }
65+
66+ #ifdef SYMBOL_AT_FILE_SCOPE
67+ static CDerived Derived;
68+ #else
69+ void fooDerived () {
70+ CDerived Derived;
71+ }
72+ #endif
73+ #endif
74+
75+ #ifdef MAIN_CODE
1276int main () {
1377#ifdef SYMBOL_AT_FILE_SCOPE
1478 NSP::CBase Base;
@@ -20,28 +84,29 @@ int main() {
2084
2185 return 0 ;
2286}
87+ #endif
2388
24- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %S/Inputs/vtable-debug-info-inheritance-simple-base.cpp -o %t.simple-base.bc
25- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %S/Inputs/vtable-debug-info-inheritance-simple-derived.cpp -o %t.simple-derived.bc
26- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-main.bc
89+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-base.bc -DBASE_CODE
90+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-derived.bc -DDERIVED_CODE
91+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-main.bc -DMAIN_CODE
2792// RUN: llvm-link %t.simple-base.bc %t.simple-derived.bc %t.simple-main.bc -S -o %t.simple-combined.ll
2893// RUN: FileCheck --input-file=%t.simple-combined.ll -check-prefix=CHECK-ONE %s
2994
30- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %S/Inputs/vtable-debug-info-inheritance-simple-base.cpp -o %t.simple-base.bc
31- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %S/Inputs/vtable-debug-info-inheritance-simple-derived.cpp -o %t.simple-derived.bc
32- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-main.bc
95+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-base.bc -DBASE_CODE
96+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-derived.bc -DDERIVED_CODE
97+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-main.bc -DMAIN_CODE
3398// RUN: llvm-link %t.simple-base.bc %t.simple-derived.bc %t.simple-main.bc -S -o %t.simple-combined.ll
3499// RUN: FileCheck --input-file=%t.simple-combined.ll -check-prefix=CHECK-ONE %s
35100
36- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %S/Inputs/vtable-debug-info-inheritance-simple-base.cpp -o %t.simple-base.bc -DSYMBOL_AT_FILE_SCOPE
37- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %S/Inputs/vtable-debug-info-inheritance-simple-derived.cpp -o %t.simple-derived.bc -DSYMBOL_AT_FILE_SCOPE
38- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-main.bc -DSYMBOL_AT_FILE_SCOPE
101+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-base.bc -DBASE_CODE -DSYMBOL_AT_FILE_SCOPE
102+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-derived.bc -DDERIVED_CODE -DSYMBOL_AT_FILE_SCOPE
103+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g %s -o %t.simple-main.bc -DMAIN_CODE -DSYMBOL_AT_FILE_SCOPE
39104// RUN: llvm-link %t.simple-base.bc %t.simple-derived.bc %t.simple-main.bc -S -o %t.simple-combined.ll
40105// RUN: FileCheck --input-file=%t.simple-combined.ll -check-prefix=CHECK-TWO %s
41106
42- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %S/Inputs/vtable-debug-info-inheritance-simple-base.cpp -o %t.simple-base.bc -DSYMBOL_AT_FILE_SCOPE
43- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %S/Inputs/vtable-debug-info-inheritance-simple-derived.cpp -o %t.simple-derived.bc -DSYMBOL_AT_FILE_SCOPE
44- // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-main.bc -DSYMBOL_AT_FILE_SCOPE
107+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-base.bc -DBASE_CODE -DSYMBOL_AT_FILE_SCOPE
108+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-derived.bc -DDERIVED_CODE -DSYMBOL_AT_FILE_SCOPE
109+ // RUN: %clang --target=x86_64-linux -Xclang -disable-O0-optnone -Xclang -disable-llvm-passes -emit-llvm -c -g -flto %s -o %t.simple-main.bc -DMAIN_CODE -DSYMBOL_AT_FILE_SCOPE
45110// RUN: llvm-link %t.simple-base.bc %t.simple-derived.bc %t.simple-main.bc -S -o %t.simple-combined.ll
46111// RUN: FileCheck --input-file=%t.simple-combined.ll -check-prefix=CHECK-TWO %s
47112
0 commit comments