diff options
| author | Reid Kleckner <reid@kleckner.net> | 2014-08-07 19:43:01 +0000 |
|---|---|---|
| committer | Reid Kleckner <reid@kleckner.net> | 2014-08-07 19:43:01 +0000 |
| commit | 9f6e43802297f4d8af7c4f33a5a1b1e3868afce8 (patch) | |
| tree | 5c1bfb0fa17e7fda03495ff503cac92a90bedb7a /clang/test/CodeGenCXX/debug-info.cpp | |
| parent | e20470d39915ea507bc13df0869bd48935f242a4 (diff) | |
| download | bcm5719-llvm-9f6e43802297f4d8af7c4f33a5a1b1e3868afce8.tar.gz bcm5719-llvm-9f6e43802297f4d8af7c4f33a5a1b1e3868afce8.zip | |
Debug info: Use record layout to find vbase offsets instead of vtables
This fixes an assertion when generating full debug info in the MS ABI
for classes with virtual bases.
Fixes PR20579.
llvm-svn: 215137
Diffstat (limited to 'clang/test/CodeGenCXX/debug-info.cpp')
| -rw-r--r-- | clang/test/CodeGenCXX/debug-info.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/test/CodeGenCXX/debug-info.cpp b/clang/test/CodeGenCXX/debug-info.cpp index 7c89dfc04ce..a3b75e2e143 100644 --- a/clang/test/CodeGenCXX/debug-info.cpp +++ b/clang/test/CodeGenCXX/debug-info.cpp @@ -1,4 +1,6 @@ // RUN: %clang_cc1 -triple x86_64-none-linux-gnu -emit-llvm -g %s -o - | FileCheck %s +// RUN: %clang_cc1 -triple i686-pc-windows-msvc -emit-llvm -g %s -o - | FileCheck %s --check-prefix=MSVC + template<typename T> struct Identity { typedef T Type; }; @@ -43,14 +45,18 @@ namespace VirtualDtor { } namespace VirtualBase { - struct A { }; - struct B : virtual A { }; + struct A { int a; }; + struct B : virtual A { int b; }; void f() { B b; } } +// MSVC: [[VBASE_B:![0-9]+]] = metadata !{i32 {{.*}}, metadata !"B", i32 {{[0-9]*}}, i64 96, i64 32, i32 0, i32 0, null, metadata [[ZZZ:![0-9]+]], i32 0, {{.*}}} ; [ DW_TAG_structure_type ] [B] [line 49, size 96, align 32, offset 0] [def] [from ] +// MSVC: [[ZZZ]] = metadata !{metadata [[VBASE_A_IN_B:![0-9]+]], +// MSVC: [[VBASE_A_IN_B]] = metadata !{i32 786460, null, metadata [[VBASE_B]], null, i32 0, i64 0, i64 0, i64 -8, i32 32, metadata !{{[0-9]*}}} ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset 18446744073709551608] [from A] + namespace b5249287 { template <typename T> class A { struct B; |

