| // REQUIRES: asserts |
| // RUN: %clang_cc1 -O0 -triple %itanium_abi_triple -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s |
| |
| // Trigger GenerateVarArgsThunk. |
| // RUN: %clang_cc1 -O0 -triple riscv64-linux-gnu -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s |
| |
| // Check that retainedNodes are properly maintained at function cloning. |
| // RUN: %clang_cc1 -O1 -triple riscv64-linux-gnu -debug-info-kind=limited -emit-llvm %s -o - | \ |
| // RUN: FileCheck %s --check-prefixes=CHECK,CHECK-DI |
| |
| // This test simply checks that the varargs thunk is created. The failing test |
| // case asserts. |
| |
| struct Alpha { |
| virtual void bravo(...); |
| }; |
| struct Charlie { |
| virtual ~Charlie() {} |
| }; |
| struct CharlieImpl : Charlie, Alpha { |
| void bravo(...) {} |
| } delta; |
| |
| // CHECK: define {{.*}} void @_ZThn{{[48]}}_N11CharlieImpl5bravoEz( |
| |
| // CHECK-DI: distinct !DISubprogram({{.*}}, linkageName: "_ZN11CharlieImpl5bravoEz", {{.*}}, retainedNodes: [[RN1:![0-9]+]] |
| // A non-empty retainedNodes list of original DISubprogram. |
| // CHECK-DI: [[RN1]] = !{!{{.*}}} |
| |
| // CHECK-DI: distinct !DISubprogram({{.*}}, linkageName: "_ZN11CharlieImpl5bravoEz", {{.*}}, retainedNodes: [[EMPTY:![0-9]+]] |
| // An empty retainedNodes list of cloned DISubprogram. |
| // CHECK-DI: [[EMPTY]] = !{} |