> On Oct 12, 2015, at 10:50 AM, David Blaikie <dblai...@gmail.com> wrote:
> +John, author of the original patch - in case it's an obvious mistake. I 
> haven't looked at John's change yet & compared it to the intended behavior, 
> etc. Will do so soon and/or if John doesn't see something at a glance.

The functionality looks fine to me; I definitely just overlooked the debug-info 
side of things.

Let’s extract out a function to emit the cast type of an explicit cast and make 
sure we call it consistently.  It can do both the VLA binding and the 
debug-info emission.

John.

> 
> On Sun, Oct 11, 2015 at 11:09 PM, Bataev, Alexey <a.bat...@hotmail.com 
> <mailto:a.bat...@hotmail.com>> wrote:
> Yes, revision 246985 
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?diff_format=h&revision=246985&view=markup
>  
> <http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?diff_format=h&revision=246985&view=markup>>
>  broke th debug info for types in explicit casts.
> 
> Best regards,
> Alexey Bataev
> =============
> Software Engineer
> Intel Compiler Team
> 
> 09.10.2015 18:26, David Blaikie пишет:
> 
> 
> On Fri, Oct 9, 2015 at 2:26 AM, Alexey Bataev via cfe-commits 
> <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> 
> <mailto:cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>>> 
> wrote:
> 
>     ABataev created this revision.
>     ABataev added a reviewer: echristo.
>     ABataev added a subscriber: cfe-commits.
> 
>     Currently debug info for types used in explicit cast only is not
>     emitted. It happened after a patch for better alignment handling.
> 
> 
> 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)?
> 
>     This patch fixes this bug.
> 
>     http://reviews.llvm.org/D13582 <http://reviews.llvm.org/D13582>
> 
>     Files:
>       lib/CodeGen/CGExpr.cpp
>       test/CodeGenCXX/debug-info-explicit-cast.cpp
> 
>     Index: lib/CodeGen/CGExpr.cpp
>     ===================================================================
>     --- lib/CodeGen/CGExpr.cpp
>     +++ lib/CodeGen/CGExpr.cpp
>     @@ -799,6 +799,10 @@
>          if (E->getType()->isVariablyModifiedType())
>            EmitVariablyModifiedType(E->getType());
> 
>     +    if (isa<ExplicitCastExpr>(CE))
>     +      if (CGDebugInfo *DI = getDebugInfo())
>     +        DI->EmitExplicitCastType(E->getType());
>     +
>          switch (CE->getCastKind()) {
>          // Non-converting casts (but not C's implicit conversion from
>     void*).
>          case CK_BitCast:
>     Index: test/CodeGenCXX/debug-info-explicit-cast.cpp
>     ===================================================================
>     --- test/CodeGenCXX/debug-info-explicit-cast.cpp
>     +++ test/CodeGenCXX/debug-info-explicit-cast.cpp
>     @@ -0,0 +1,18 @@
>     +// RUN: %clangxx -c -target x86_64-unknown-unknown -g %s
>     -emit-llvm -S -o - | FileCheck %s
>     +struct Foo {
>     +  int a;
>     +  Foo() : a(1){};
>     +};
>     +
>     +struct Bar {
>     +  int b;
>     +  Bar() : b(2){};
>     +};
>     +
>     +int main() {
>     +  Bar *pb = new Bar;
>     +
>     +  return reinterpret_cast<Foo *>(pb)->a;
>     +}
>     +
>     +// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "Foo",
> 
> 
> 
>     _______________________________________________
>     cfe-commits mailing list
>     cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> 
> <mailto:cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>>
>     http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits 
> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits>
> 
> 
> 
> 

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to