[DEBUGINFO] [LLDB] Add support for generating debug-info for structured bindings...
authorShafik Yaghmour <syaghmour@apple.com>
Thu, 17 Feb 2022 19:13:46 +0000 (11:13 -0800)
committerShafik Yaghmour <syaghmour@apple.com>
Thu, 17 Feb 2022 19:14:14 +0000 (11:14 -0800)
commitf56cb520d8554ca42a215e82ecfa58d0b6c178e4
tree3028699332076f168cf44e30ffedb423b95f8b7e
parentbd8db271e730f9a4f4f89176e1627b064d91e484
[DEBUGINFO] [LLDB] Add support for generating debug-info for structured bindings of structs and arrays

Currently we are not emitting debug-info for all cases of structured bindings a
C++17 feature which allows us to bind names to subobjects in an initializer.

A structured binding is represented by a DecompositionDecl AST node and the
binding are represented by a BindingDecl. It looks the original implementation
only covered the tuple like case which be represented by a DeclRefExpr which
contains a VarDecl.

If the binding is to a subobject of the struct the binding will contain a
MemberExpr and in the case of arrays it will contain an ArraySubscriptExpr.
This PR adds support emitting debug-info for the MemberExpr and ArraySubscriptExpr
cases as well as llvm and lldb tests for these cases as well as the tuple case.

Differential Revision: https://reviews.llvm.org/D119178
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
clang/test/CodeGenCXX/debug-info-structured-binding.cpp [new file with mode: 0644]
lldb/test/API/lang/cpp/structured-binding/Makefile [new file with mode: 0644]
lldb/test/API/lang/cpp/structured-binding/TestStructuredBinding.py [new file with mode: 0644]
lldb/test/API/lang/cpp/structured-binding/main.cpp [new file with mode: 0644]