brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · b7aac19 Raw
90 lines · cpp
1// Tests that we emit unified constructor/destructor linkage names2// for ABIs that support it.3 4// Check that -gstructor-decl-linkage-names is the default.5// RUN: %clang_cc1 -triple aarch64-apple-macosx -emit-llvm -debug-info-kind=standalone \6// RUN:            %s -o - | FileCheck %s --check-prefixes=CHECK,ITANIUM7//8// Check with -gstructor-decl-linkage-names.9// RUN: %clang_cc1 -triple aarch64-apple-macosx -emit-llvm -debug-info-kind=standalone \10// RUN:            -gstructor-decl-linkage-names %s -o - | FileCheck %s --check-prefixes=CHECK,ITANIUM11//12// Check with -gno-structor-decl-linkage-names.13// RUN: %clang_cc1 -triple aarch64-apple-macosx -emit-llvm -debug-info-kind=standalone \14// RUN:            -gno-structor-decl-linkage-names %s -o - | FileCheck %s --check-prefixes=CHECK,DISABLE15//16// Check ABI without structor variants.17// RUN: %clang_cc1 -triple x86_64-windows-msvc -emit-llvm -debug-info-kind=standalone \18// RUN:            -gstructor-decl-linkage-names %s -o - | FileCheck %s --check-prefixes=CHECK,MSABI19 20struct Base {21  Base(int x);22  ~Base();23};24 25Base::Base(int x) {}26Base::~Base() {}27 28// Check that we emit unified ctor/dtor (C4/D4) on Itanium but not for MS-ABI.29 30// CHECK: ![[BASE_CTOR_DECL:[0-9]+]] = !DISubprogram(name: "Base"31// MSABI-NOT:                                        linkageName:32// DISABLE-NOT:                                      linkageName:33// ITANIUM-SAME:                                     linkageName: "_ZN4BaseC4Ei"34// CHECK-SAME:                                       spFlags: 035 36// CHECK: ![[BASE_DTOR_DECL:[0-9]+]] = !DISubprogram(name: "~Base"37// MSABI-NOT:                                        linkageName:38// DISABLE-NOT:                                      linkageName:39// ITANIUM-SAME:                                     linkageName: "_ZN4BaseD4Ev"40// CHECK-SAME:                                       spFlags: 041 42// Check that the ctor/dtor definitions have linkage names that aren't43// the ones on the declaration.44 45// CHECK: !DISubprogram(name: "Base"46// MSABI-SAME:          linkageName:47// ITANIUM-SAME:        linkageName: "_ZN4BaseC2Ei"48// CHECK-SAME:          spFlags: DISPFlagDefinition49// CHECK-SAME:          declaration: ![[BASE_CTOR_DECL]]50 51// ITANIUM: !DISubprogram(name: "Base"52// ITANIUM-SAME:          linkageName: "_ZN4BaseC1Ei"53// ITANIUM-SAME:          spFlags: DISPFlagDefinition54// ITANIUM-SAME:          declaration: ![[BASE_CTOR_DECL]]55 56// CHECK: !DISubprogram(name: "~Base"57// MSABI-SAME:          linkageName:58// ITANIUM-SAME:        linkageName: "_ZN4BaseD2Ev"59// CHECK-SAME:          spFlags: DISPFlagDefinition60// CHECK-SAME:          declaration: ![[BASE_DTOR_DECL]]61 62// ITANIUM: !DISubprogram(name: "~Base"63// ITANIUM-SAME:          linkageName: "_ZN4BaseD1Ev"64// ITANIUM-SAME:          spFlags: DISPFlagDefinition65// ITANIUM-SAME:          declaration: ![[BASE_DTOR_DECL]]66 67struct Derived : public Base {68    using Base::Base;69} d(5);70 71// CHECK: !DISubprogram(name: "Base"72// MSABI-SAME:          linkageName:73// ITANIUM-SAME:        linkageName: "_ZN7DerivedCI14BaseEi"74// CHECK-SAME:          spFlags: {{.*}}DISPFlagDefinition75// CHECK-SAME:          declaration: ![[BASE_INHERIT_CTOR_DECL:[0-9]+]]76 77// CHECK: [[BASE_INHERIT_CTOR_DECL]] = !DISubprogram(name: "Base"78// MSABI-NOT:                                        linkageName:79// DISABLE-NOT:                                      linkageName:80// ITANIUM-SAME:                                     linkageName: "_ZN7DerivedCI44BaseEi"81// CHECK-SAME                                        spFlags: 082 83// ITANIUM: !DISubprogram(name: "Base"84// ITANIUM-SAME:          linkageName: "_ZN7DerivedCI24BaseEi"85// ITANIUM-SAME:          spFlags: DISPFlagDefinition86// ITANIUM-SAME:          declaration: ![[BASE_INHERIT_CTOR_DECL:[0-9]+]]87 88// MSABI:   !DISubprogram(name: "~Derived"89// DISABLE: !DISubprogram(name: "~Derived"90