On Nov 2, 2012, at 4:40 PM, David Blaikie <dblai...@gmail.com> wrote:

> Author: dblaikie
> Date: Fri Nov  2 18:40:00 2012
> New Revision: 167336
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=167336&view=rev
> Log:
> Emit debug info for C++ struct definitions as DW_TAG_structure_type (instead 
> of class_type).

Thank you!

        - Doug

> Modified:
>    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
>    cfe/trunk/test/CodeGenCXX/debug-info-class.cpp
>    cfe/trunk/test/CodeGenCXX/debug-info-fwd-ref.cpp
> 
> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=167336&r1=167335&r2=167336&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri Nov  2 18:40:00 2012
> @@ -1875,7 +1875,7 @@
>   // Get overall information about the record type for the debug info.
>   llvm::DIFile DefUnit = getOrCreateFile(RD->getLocation());
>   unsigned Line = getLineNumber(RD->getLocation());
> -  StringRef RDName = RD->getName();
> +  StringRef RDName = getClassName(RD);
> 
>   llvm::DIDescriptor RDContext;
>   if (CGM.getCodeGenOpts().getDebugInfo() == CodeGenOptions::LimitedDebugInfo)
> @@ -1896,9 +1896,7 @@
>   if (RD->isUnion())
>     RealDecl = DBuilder.createUnionType(RDContext, RDName, DefUnit, Line,
>                                       Size, Align, 0, llvm::DIArray());
> -  else if (CXXDecl) {
> -    RDName = getClassName(RD);
> -    
> +  else if (RD->isClass()) {
>     // FIXME: This could be a struct type giving a default visibility 
> different
>     // than C++ class type, but needs llvm metadata changes first.
>     RealDecl = DBuilder.createClassType(RDContext, RDName, DefUnit, Line,
> 
> Modified: cfe/trunk/test/CodeGenCXX/debug-info-class.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-class.cpp?rev=167336&r1=167335&r2=167336&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/debug-info-class.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/debug-info-class.cpp Fri Nov  2 18:40:00 2012
> @@ -8,7 +8,7 @@
> union baz;
> void func(baz *f) { // CHECK: DW_TAG_union_type
> }
> -struct A { // FIXME: we're still emitting this as DW_TAG_class_type
> +struct A { // CHECK: DW_TAG_structure_type
>   int one;
>   static const int HdrSize = 52; // CHECK: HdrSize
>   int two;
> 
> Modified: cfe/trunk/test/CodeGenCXX/debug-info-fwd-ref.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-fwd-ref.cpp?rev=167336&r1=167335&r2=167336&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGenCXX/debug-info-fwd-ref.cpp (original)
> +++ cfe/trunk/test/CodeGenCXX/debug-info-fwd-ref.cpp Fri Nov  2 18:40:00 2012
> @@ -16,11 +16,10 @@
>     return 0;
> }
> 
> -// Make sure we have two DW_TAG_class_types for baz and bar and no forward
> +// Make sure we have two DW_TAG_structure_types for baz and bar and no 
> forward
> // references.
> -// FIXME: These should be struct types to match the declaration.
> -// CHECK: metadata !{i32 {{.*}}, null, metadata !"bar", metadata !6, i32 8, 
> i64 128, i64 64, i32 0, i32 0, null, metadata !18, i32 0, null, null} ; [ 
> DW_TAG_class_type ]
> -// CHECK: metadata !{i32 {{.*}}, null, metadata !"baz", metadata !6, i32 3, 
> i64 32, i64 32, i32 0, i32 0, null, metadata !21, i32 0, null, null} ; [ 
> DW_TAG_class_type ]
> -// CHECK-NOT: metadata !{i32 {{.*}}, null, metadata !"bar", metadata !6, i32 
> 8, i64 0, i64 0, i32 0, i32 4, i32 0, null, i32 0, i32 0} ; [ 
> DW_TAG_class_type ]
> -// CHECK-NOT: metadata !{i32 {{.*}}, null, metadata !"baz", metadata !6, i32 
> 3, i64 0, i64 0, i32 0, i32 4, null, null, i32 0, null, null} ; [ 
> DW_TAG_class_type ]
> +// CHECK: metadata !{i32 {{.*}}, null, metadata !"bar", metadata !6, i32 8, 
> i64 128, i64 64, i32 0, i32 0, null, metadata !18, i32 0, null, null} ; [ 
> DW_TAG_structure_type ]
> +// CHECK: metadata !{i32 {{.*}}, null, metadata !"baz", metadata !6, i32 3, 
> i64 32, i64 32, i32 0, i32 0, null, metadata !21, i32 0, null, null} ; [ 
> DW_TAG_structure_type ]
> +// CHECK-NOT: metadata !{i32 {{.*}}, null, metadata !"bar", metadata !6, i32 
> 8, i64 0, i64 0, i32 0, i32 4, i32 0, null, i32 0, i32 0} ; [ 
> DW_TAG_structure_type ]
> +// CHECK-NOT: metadata !{i32 {{.*}}, null, metadata !"baz", metadata !6, i32 
> 3, i64 0, i64 0, i32 0, i32 4, null, null, i32 0, null, null} ; [ 
> DW_TAG_structure_type ]
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to