mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 12:36:10 +00:00

The artificial variable describing the array size is supposed to be called "__vla_expr", but this was implemented by retrieving the name of the associated alloca, which isn't a reliable source for the name, since nonassert compilers may drop names from LLVM IR. rdar://problem/45924808 llvm-svn: 346542
23 lines
893 B
C++
23 lines
893 B
C++
// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -std=c++11 -triple x86_64-unknown-unknown %s -o - | FileCheck %s
|
|
|
|
|
|
void f(int m) {
|
|
int x[3][m];
|
|
}
|
|
|
|
int (*fp)(int[][*]) = nullptr;
|
|
|
|
// CHECK: !DICompositeType(tag: DW_TAG_array_type,
|
|
// CHECK-NOT: size:
|
|
// CHECK-SAME: elements: [[ELEM_TYPE:![0-9]+]]
|
|
// CHECK: [[ELEM_TYPE]] = !{[[NOCOUNT:.*]]}
|
|
// CHECK: [[NOCOUNT]] = !DISubrange(count: -1)
|
|
//
|
|
// CHECK: [[VAR:![0-9]+]] = !DILocalVariable(name: "__vla_expr0", {{.*}}flags: DIFlagArtificial
|
|
// CHECK: !DICompositeType(tag: DW_TAG_array_type,
|
|
// CHECK-NOT: size:
|
|
// CHECK-SAME: elements: [[ELEM_TYPE:![0-9]+]]
|
|
// CHECK: [[ELEM_TYPE]] = !{[[THREE:.*]], [[VARRANGE:![0-9]+]]}
|
|
// CHECK: [[THREE]] = !DISubrange(count: 3)
|
|
// CHECK: [[VARRANGE]] = !DISubrange(count: [[VAR]])
|