Skip to content

Commit f75acae

Browse files
[Clang][DebugInfo] Clang generates an extra spurious unnamed 'dbg.declare'.
Do not emit call to llvm.dbg.declare when the variable declaration is a DecompositionDecl as its instance class is always unnamed. The emitted debug declare looks like: call void @llvm.dbg.declare(metadata ..., metadata !xx, metadata ...) !xx = !DILocalVariable(scope: !..., file: !..., line: ..., type: !...) - Remove the added test case. - Added the '--implicit-check-not' option - Added checks for variables names.
1 parent 42df544 commit f75acae

File tree

2 files changed

+11
-25
lines changed

2 files changed

+11
-25
lines changed

clang/test/CodeGenCXX/debug-info-structured-binding-field.cpp

Lines changed: 0 additions & 20 deletions
This file was deleted.

clang/test/CodeGenCXX/debug-info-structured-binding.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
1-
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -triple %itanium_abi_triple %s -o - | FileCheck %s
1+
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=standalone -triple %itanium_abi_triple %s -o - | FileCheck %s --implicit-check-not="call void @llvm.dbg.declare"
2+
3+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[a-z]+}}, metadata !{{[0-9]+}}, metadata !DIExpression())
4+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata ![[VAR_1:[0-9]+]], metadata !DIExpression())
5+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata ![[VAR_2:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}))
6+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata ![[VAR_3:[0-9]+]], metadata !DIExpression(DW_OP_deref))
7+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata ![[VAR_4:[0-9]+]], metadata !DIExpression(DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
8+
// CHECK: ![[VAR_1]] = !DILocalVariable(name: "x1"
9+
// CHECK: ![[VAR_2]] = !DILocalVariable(name: "y1"
10+
// CHECK: ![[VAR_3]] = !DILocalVariable(name: "x2"
11+
// CHECK: ![[VAR_4]] = !DILocalVariable(name: "y2"
212

3-
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata !{{[0-9]+}}, metadata !DIExpression())
4-
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_plus_uconst, {{[0-9]+}}))
5-
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_deref))
6-
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata !{{[0-9]+}}, metadata !DIExpression(DW_OP_deref, DW_OP_plus_uconst, {{[0-9]+}}))
713
struct A {
814
int x;
915
int y;

0 commit comments

Comments
 (0)