[PATCH] D13582: [DEBUG INFO] Emit debug info for type used in explicit cast only.
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 12 10:50:53 PDT 2015
+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.
On Sun, Oct 11, 2015 at 11:09 PM, Bataev, Alexey <a.bataev at 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>
> 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 at lists.llvm.org <mailto:cfe-commits at 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
>>
>> 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 at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151012/a774aa50/attachment.html>
More information about the cfe-commits
mailing list