Skip to content

Commit d9fe4ff

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: !...) - Added check for missing captured 'a' variable. - Check for the specific values in DW_OP_plus_uconst.
1 parent f75acae commit d9fe4ff

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// 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"
22

3-
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[a-z]+}}, metadata !{{[0-9]+}}, metadata !DIExpression())
3+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[a-z]+}}, metadata ![[VAR_0:[0-9]+]], metadata !DIExpression())
44
// 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]+}}))
5+
// CHECK: call void @llvm.dbg.declare(metadata ptr %{{[0-9]+}}, metadata ![[VAR_2:[0-9]+]], metadata !DIExpression(DW_OP_plus_uconst, 4))
66
// 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]+}}))
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, 4))
8+
// CHECK: ![[VAR_0]] = !DILocalVariable(name: "a"
89
// CHECK: ![[VAR_1]] = !DILocalVariable(name: "x1"
910
// CHECK: ![[VAR_2]] = !DILocalVariable(name: "y1"
1011
// CHECK: ![[VAR_3]] = !DILocalVariable(name: "x2"

0 commit comments

Comments
 (0)