diff options
| author | Eric Christopher <echristo@gmail.com> | 2014-04-10 05:20:00 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@gmail.com> | 2014-04-10 05:20:00 +0000 |
| commit | cab9fae40308173868967c870c0247239e07a9a3 (patch) | |
| tree | 317e32fe66cc8b42999e2180e4393909793f8b61 /clang/test/CodeGenCXX | |
| parent | 951716bf37dc43764322925350ba801c6d6dc04f (diff) | |
| download | bcm5719-llvm-cab9fae40308173868967c870c0247239e07a9a3.tar.gz bcm5719-llvm-cab9fae40308173868967c870c0247239e07a9a3.zip | |
Add global static variables for anonymous union fields. This makes
sure that a debugger can find them when stepping through code,
for example from the included testcase:
12 int test_it() {
13 c = 1;
14 d = 2;
-> 15 a = 4;
16 return (c == 1);
17 }
18
(lldb) p a
(int) $0 = 2
(lldb) p c
(int) $1 = 2
(lldb) p d
(int) $2 = 2
and a, c, d are all part of the file static anonymous union:
static union {
int c;
int d;
union {
int a;
};
struct {
int b;
};
};
Fixes PR19221.
llvm-svn: 205952
Diffstat (limited to 'clang/test/CodeGenCXX')
| -rw-r--r-- | clang/test/CodeGenCXX/debug-info-anon-union-vars.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/debug-info-anon-union-vars.cpp b/clang/test/CodeGenCXX/debug-info-anon-union-vars.cpp new file mode 100644 index 00000000000..396b7e94a8e --- /dev/null +++ b/clang/test/CodeGenCXX/debug-info-anon-union-vars.cpp @@ -0,0 +1,28 @@ +// RUN: %clang_cc1 -emit-llvm -gdwarf-4 -triple x86_64-linux-gnu %s -o - | FileCheck %s + +// Make sure that we emit a global variable for each of the members of the +// anonymous union. + +static union { + int c; + int d; + union { + int a; + }; + struct { + int b; + }; +}; + +int test_it() { + c = 1; + d = 2; + a = 4; + return (c == 1); +} + +// CHECK: [[FILE:.*]] = {{.*}}[ DW_TAG_file_type ] [{{.*}}debug-info-anon-union-vars.cpp] +// CHECK: [[FILE]]{{.*}}[ DW_TAG_variable ] [c] [line 6] [local] [def] +// CHECK: [[FILE]]{{.*}}[ DW_TAG_variable ] [d] [line 6] [local] [def] +// CHECK: [[FILE]]{{.*}}[ DW_TAG_variable ] [a] [line 6] [local] [def] +// CHECK: [[FILE]]{{.*}}[ DW_TAG_variable ] [b] [line 6] [local] [def] |

