mirror of https://github.com/microsoft/clang.git
[DebugInfo] Avoid name conflict of generated VLA expression variable.
Summary: This patch also adds the 'DW_AT_artificial' flag to the generated variable. Addresses the issues mentioned in http://llvm.org/PR30553. Reviewers: CarlosAlbertoEnciso, probinson, aprantl Reviewed By: aprantl Subscribers: JDevlieghere, cfe-commits Differential Revision: https://reviews.llvm.org/D43189 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@324988 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
78bb478c5d
commit
cc902685c8
|
@ -969,8 +969,8 @@ void CodeGenFunction::EmitAndRegisterVariableArrayDimensions(
|
|||
if (auto *C = dyn_cast<llvm::ConstantInt>(VlaSize.NumElts))
|
||||
Dimensions.emplace_back(C, Type1D.getUnqualifiedType());
|
||||
else {
|
||||
auto SizeExprAddr =
|
||||
CreateDefaultAlignTempAlloca(VlaSize.NumElts->getType(), "vla_expr");
|
||||
auto SizeExprAddr = CreateDefaultAlignTempAlloca(
|
||||
VlaSize.NumElts->getType(), "__vla_expr");
|
||||
Builder.CreateStore(VlaSize.NumElts, SizeExprAddr);
|
||||
Dimensions.emplace_back(SizeExprAddr.getPointer(),
|
||||
Type1D.getUnqualifiedType());
|
||||
|
@ -999,6 +999,7 @@ void CodeGenFunction::EmitAndRegisterVariableArrayDimensions(
|
|||
getContext(), const_cast<DeclContext *>(D.getDeclContext()),
|
||||
D.getLocation(), D.getLocation(), &NameIdent, QT,
|
||||
getContext().CreateTypeSourceInfo(QT), SC_Auto);
|
||||
ArtificialDecl->setImplicit();
|
||||
|
||||
MD = DI->EmitDeclareOfAutoVariable(ArtificialDecl, VlaSize.NumElts,
|
||||
Builder);
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
void testVLAwithSize(int s)
|
||||
{
|
||||
// CHECK-DAG: dbg.declare({{.*}} %vla_expr, metadata ![[VLAEXPR:[0-9]+]]
|
||||
// CHECK-DAG: dbg.declare({{.*}} %__vla_expr, metadata ![[VLAEXPR:[0-9]+]]
|
||||
// CHECK-DAG: dbg.declare({{.*}} %vla, metadata ![[VAR:[0-9]+]]
|
||||
// CHECK-DAG: ![[VLAEXPR]] = !DILocalVariable(name: "vla_expr"
|
||||
// CHECK-DAG: ![[VLAEXPR]] = !DILocalVariable(name: "__vla_expr", {{.*}} flags: DIFlagArtificial
|
||||
// CHECK-DAG: ![[VAR]] = !DILocalVariable(name: "vla",{{.*}} line: [[@LINE+2]]
|
||||
// CHECK-DAG: !DISubrange(count: ![[VLAEXPR]])
|
||||
int vla[s];
|
||||
|
|
|
@ -13,7 +13,7 @@ int (*fp)(int[][*]) = nullptr;
|
|||
// CHECK: [[ELEM_TYPE]] = !{[[NOCOUNT:.*]]}
|
||||
// CHECK: [[NOCOUNT]] = !DISubrange(count: -1)
|
||||
//
|
||||
// CHECK: [[VAR:![0-9]+]] = !DILocalVariable(name: "vla_expr"
|
||||
// CHECK: [[VAR:![0-9]+]] = !DILocalVariable(name: "__vla_expr", {{.*}}flags: DIFlagArtificial
|
||||
// CHECK: !DICompositeType(tag: DW_TAG_array_type,
|
||||
// CHECK-NOT: size:
|
||||
// CHECK-SAME: elements: [[ELEM_TYPE:![0-9]+]]
|
||||
|
|
|
@ -511,7 +511,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -528,7 +528,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -555,7 +555,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -555,7 +555,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -478,7 +478,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -553,7 +553,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -564,7 +564,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
|
@ -553,7 +553,7 @@ int bar(int n){
|
|||
// CHECK-64: store i32 %{{.+}}, i32* [[B_ADDR]],
|
||||
// CHECK-64: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_CADDR]],
|
||||
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* %__vla_expr
|
||||
// CHECK-32: store i32 %{{.+}}, i32* [[B_ADDR:%.+]],
|
||||
// CHECK-32: [[B_CVAL:%.+]] = load i[[SZ]], i[[SZ]]* [[B_ADDR]],
|
||||
|
||||
|
|
Loading…
Reference in New Issue