summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@hotmail.com>2015-10-20 04:24:12 +0000
committerAlexey Bataev <a.bataev@hotmail.com>2015-10-20 04:24:12 +0000
commit2bf9b4c0d18dd03d967f3fd5bb6b5d156b1ed3a7 (patch)
treef078924c5b5ba712ea756475a952a58acaac2dc7 /clang/test/CodeGenCXX
parent8f18917a9050e87c8f6ff84493f3eff8467378d2 (diff)
downloadbcm5719-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.cpp46
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",
OpenPOWER on IntegriCloud