<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 9, 2015 at 2:26 AM, Alexey Bataev via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ABataev created this revision.<br>
ABataev added a reviewer: echristo.<br>
ABataev added a subscriber: cfe-commits.<br>
<br>
Currently debug info for types used in explicit cast only is not emitted. It happened after a patch for better alignment handling.</blockquote><div><br></div><div>You mean a patch related to alignment regressed this functionality? Do you have the specific revision number of that change (since it sounds like you tracked it down)?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> This patch fixes this bug.<br>
<br>
<a href="http://reviews.llvm.org/D13582" rel="noreferrer" target="_blank">http://reviews.llvm.org/D13582</a><br>
<br>
Files:<br>
  lib/CodeGen/CGExpr.cpp<br>
  test/CodeGenCXX/debug-info-explicit-cast.cpp<br>
<br>
Index: lib/CodeGen/CGExpr.cpp<br>
===================================================================<br>
--- lib/CodeGen/CGExpr.cpp<br>
+++ lib/CodeGen/CGExpr.cpp<br>
@@ -799,6 +799,10 @@<br>
     if (E->getType()->isVariablyModifiedType())<br>
       EmitVariablyModifiedType(E->getType());<br>
<br>
+    if (isa<ExplicitCastExpr>(CE))<br>
+      if (CGDebugInfo *DI = getDebugInfo())<br>
+        DI->EmitExplicitCastType(E->getType());<br>
+<br>
     switch (CE->getCastKind()) {<br>
     // Non-converting casts (but not C's implicit conversion from void*).<br>
     case CK_BitCast:<br>
Index: test/CodeGenCXX/debug-info-explicit-cast.cpp<br>
===================================================================<br>
--- test/CodeGenCXX/debug-info-explicit-cast.cpp<br>
+++ test/CodeGenCXX/debug-info-explicit-cast.cpp<br>
@@ -0,0 +1,18 @@<br>
+// RUN: %clangxx -c -target x86_64-unknown-unknown -g %s -emit-llvm -S -o - | FileCheck %s<br>
+struct Foo {<br>
+  int a;<br>
+  Foo() : a(1){};<br>
+};<br>
+<br>
+struct Bar {<br>
+  int b;<br>
+  Bar() : b(2){};<br>
+};<br>
+<br>
+int main() {<br>
+  Bar *pb = new Bar;<br>
+<br>
+  return reinterpret_cast<Foo *>(pb)->a;<br>
+}<br>
+<br>
+// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "Foo",<br>
<br>
<br>
<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div></div>