diff options
author | Alexey Bataev <a.bataev@hotmail.com> | 2015-10-20 04:24:12 +0000 |
---|---|---|
committer | Alexey Bataev <a.bataev@hotmail.com> | 2015-10-20 04:24:12 +0000 |
commit | 2bf9b4c0d18dd03d967f3fd5bb6b5d156b1ed3a7 (patch) | |
tree | f078924c5b5ba712ea756475a952a58acaac2dc7 /clang/test/CodeGenCXX | |
parent | 8f18917a9050e87c8f6ff84493f3eff8467378d2 (diff) | |
download | bcm5719-llvm-2bf9b4c0d18dd03d967f3fd5bb6b5d156b1ed3a7.tar.gz bcm5719-llvm-2bf9b4c0d18dd03d967f3fd5bb6b5d156b1ed3a7.zip |
[DEBUG INFO] Emit debug info for type used in explicit cast only.
Currently debug info for types used in explicit cast only is not emitted. It happened after a patch for better alignment handling. This patch fixes this bug.
Differential Revision: http://reviews.llvm.org/D13582
llvm-svn: 250795
Diffstat (limited to 'clang/test/CodeGenCXX')
-rw-r--r-- | clang/test/CodeGenCXX/debug-info-explicit-cast.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/debug-info-explicit-cast.cpp b/clang/test/CodeGenCXX/debug-info-explicit-cast.cpp new file mode 100644 index 00000000000..028a7760d8b --- /dev/null +++ b/clang/test/CodeGenCXX/debug-info-explicit-cast.cpp @@ -0,0 +1,46 @@ +// RUN: %clangxx -c -target %itanium_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s +// RUN: %clangxx -c -target %ms_abi_triple -g %s -emit-llvm -S -o - | FileCheck %s + +struct Foo { + int A; + Foo() : A(1){}; +}; + +struct Bar { + int B; + Bar() : B(2){}; +}; + +struct Baz { + int C; + Baz() : C(3){}; +}; + +struct Qux { + int d() { return 4; } + Qux() {}; +}; + +struct Quux { + int E; + Quux() : E(5){}; +}; + +typedef int(Qux::*TD)(); +typedef int(Qux::*TD1)(); +int Val = reinterpret_cast<Baz *>(0)->C; +int main() { + Bar *PB = new Bar; + TD d = &Qux::d; + (void)reinterpret_cast<TD1>(d); + + return reinterpret_cast<Foo *>(PB)->A + reinterpret_cast<Quux *>(0)->E; +} + +// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Foo", +// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Bar", +// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Baz", +// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Qux", +// CHECK-DAG: !DICompositeType(tag: DW_TAG_structure_type, name: "Quux", +// CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD", +// CHECK-DAG: !DIDerivedType(tag: DW_TAG_typedef, name: "TD1", |