On Thu, Aug 7, 2014 at 1:36 PM, Reid Kleckner <[email protected]> wrote: > Author: rnk > Date: Thu Aug 7 15:36:48 2014 > New Revision: 215141 > > URL: http://llvm.org/viewvc/llvm-project?rev=215141&view=rev > Log: > Revert "Debug info: Use record layout to find vbase offsets instead of > vtables" > > This reverts commit r215137. > > This doesn't work at all, an offset-offset is probably different than an > offset. I'm scared that this passed our normal test suite.
Patches welcome? ;) Yeah, the test coverage isn't great, unfortunately. We try to improve it as we go. > > Modified: > cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > cfe/trunk/test/CodeGenCXX/debug-info.cpp > > Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=215141&r1=215140&r2=215141&view=diff > ============================================================================== > --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Thu Aug 7 15:36:48 2014 > @@ -1195,7 +1195,9 @@ CollectCXXBases(const CXXRecordDecl *RD, > if (BI.isVirtual()) { > // virtual base offset offset is -ve. The code generator emits dwarf > // expression where it expects +ve number. > - BaseOffset = 0 - RL.getVBaseClassOffset(Base).getQuantity(); > + BaseOffset = > + 0 - CGM.getItaniumVTableContext() > + .getVirtualBaseOffsetOffset(RD, Base).getQuantity(); > BFlags = llvm::DIDescriptor::FlagVirtual; > } else > BaseOffset = CGM.getContext().toBits(RL.getBaseClassOffset(Base)); > > Modified: cfe/trunk/test/CodeGenCXX/debug-info.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info.cpp?rev=215141&r1=215140&r2=215141&view=diff > ============================================================================== > --- cfe/trunk/test/CodeGenCXX/debug-info.cpp (original) > +++ cfe/trunk/test/CodeGenCXX/debug-info.cpp Thu Aug 7 15:36:48 2014 > @@ -1,6 +1,4 @@ > // RUN: %clang_cc1 -triple x86_64-none-linux-gnu -emit-llvm -g %s -o - | > FileCheck %s > -// RUN: %clang_cc1 -triple i686-pc-windows-msvc -emit-llvm -g %s -o - | > FileCheck %s --check-prefix=MSVC > - > template<typename T> struct Identity { > typedef T Type; > }; > @@ -45,18 +43,14 @@ namespace VirtualDtor { > } > > namespace VirtualBase { > - struct A { int a; }; > - struct B : virtual A { int b; }; > + struct A { }; > + struct B : virtual A { }; > > void f() { > B b; > } > } > > -// MSVC: [[VBASE_B:![0-9]+]] = metadata !{i32 {{.*}}, metadata !"B", i32 > {{[0-9]*}}, i64 96, i64 32, i32 0, i32 0, null, metadata [[ZZZ:![0-9]+]], i32 > 0, {{.*}}} ; [ DW_TAG_structure_type ] [B] [line 49, size 96, align 32, > offset 0] [def] [from ] > -// MSVC: [[ZZZ]] = metadata !{metadata [[VBASE_A_IN_B:![0-9]+]], > -// MSVC: [[VBASE_A_IN_B]] = metadata !{i32 786460, null, metadata > [[VBASE_B]], null, i32 0, i64 0, i64 0, i64 -8, i32 32, metadata !{{[0-9]*}}} > ; [ DW_TAG_inheritance ] [line 0, size 0, align 0, offset > 18446744073709551608] [from A] > - > namespace b5249287 { > template <typename T> class A { > struct B; > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
