[llvm] r214985 - DebugInfo: Fix ranges+gmlt test case to actually exercise the gmlt situation.

David Blaikie dblaikie at gmail.com
Wed Aug 6 22:31:54 PDT 2014


Thanks guys. Sorry about the noise.
On Aug 6, 2014 10:23 PM, "Eric Christopher" <echristo at gmail.com> wrote:

>
> On Aug 6, 2014 8:58 PM, "Justin Bogner" <mail at justinbogner.com> wrote:
> >
> > Eric Christopher <echristo at gmail.com> writes:
> > > Nah, just make it a Darwin like section. "__TEXT,__bar" should work.
> >
> > Right, elf don't care ;) Fixed in r215052. Thanks!
> >
>
> Thank you!
>
> -eric
>
> > > On Aug 6, 2014 7:03 PM, "Justin Bogner" <mail at justinbogner.com> wrote:
> > >
> > >     David Blaikie <dblaikie at gmail.com> writes:
> > >     > Author: dblaikie
> > >     > Date: Wed Aug  6 13:24:19 2014
> > >     > New Revision: 214985
> > >     >
> > >     > URL: http://llvm.org/viewvc/llvm-project?rev=214985&view=rev
> > >     > Log:
> > >     > DebugInfo: Fix ranges+gmlt test case to actually exercise the
> gmlt
> > >     situation.
> > >
> > >     This is causing a test failure on Darwin:
> > >
> > >         LLVM ERROR: Global variable 'f2' has an invalid section
> specifier
> > >     'bar': mach-o section specifier requires a segment and section
> separated
> > >     by a comma.
> > >
> > >     I guess this test needs a triple so that it generates elf?
> > >
> > >     > Originally this test case tested the specified behavior (that
> -gmlt
> > >     > would not produce DW_AT_ranges and that when no CU DW_AT_ranges
> were
> > >     > produced, no debug_ranges section (not even an empty list) would
> be
> > >     > produced) but then the ranges emission code was improved not to
> create
> > >     > ranges of a single element (instead favoring high_pc/low_pc) and
> so this
> > >     > test case no longer exercised the -gmlt portion of the behavior.
> > >     >
> > >     > This caused me some confusion when reading the comments and
> trying to
> > >     > update this test case for future changes to -gmlt. I've made
> this test
> > >     > resilient to those changes (by using the {{DW_TAG|NULL}} pattern
> to
> > >     > block the end of the attribute search at the end of the CU's
> attribute
> > >     > list without mandating that it must (or must not) be followed by
> another
> > >     > tag (the future changes to -gmlt should produce no subprograms
> in this
> > >     > CU))
> > >     >
> > >     > Fix the test case to have two functions in distinct sections to
> force
> > >     > the use of DW_AT_ranges.
> > >     >
> > >     > Modified:
> > >     >     llvm/trunk/test/DebugInfo/cu-line-tables.ll
> > >     >
> > >     > Modified: llvm/trunk/test/DebugInfo/cu-line-tables.ll
> > >     > URL:
> > >     > http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/
> > >
> cu-line-tables.ll?rev=214985&r1=214984&r2=214985&view=diff================
> > >     ==============================================================
> > >     > --- llvm/trunk/test/DebugInfo/cu-line-tables.ll (original)
> > >     > +++ llvm/trunk/test/DebugInfo/cu-line-tables.ll Wed Aug  6
> 13:24:19 2014
> > >     > @@ -1,17 +1,28 @@
> > >     >  ; REQUIRES: object-emission
> > >     > -; RUN: %llc_dwarf -O0 -filetype=obj %s -o %t
> > >     > -; RUN: llvm-dwarfdump %t | FileCheck %s
> > >     > -
> > >     > -; Check that we don't emit ranges if we're emitting line tables
> only.
> > >     > +; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump - |
> FileCheck
> > >     %s
> > >     >
> > >     > +; Generated from the following source compiled with clang -gmlt:
> > >     > +; void f1(void) {}
> > >     > +; void f2(void) __attribute__((section("bar"))) {}
> > >     > +
> > >     > +; Check that
> > >     > +;  * -gmlt ('Emission Kind' of 'LineTablesOnly' in the CU debug
> info
> > >     metadata)
> > >     > +;    doesn't produce ranges.
> > >     > +;  * if no ranges are produced, no debug_ranges list (not even
> an empty
> > >     one) is
> > >     > +;    emitted.
> > >     > +
> > >     > +; -gmlt means no DW_AT_ranges on the CU, even though there are
> parts of
> > >     the CU
> > >     > +; in different sections and this would normally necessitate a
> > >     DW_AT_ranges
> > >     > +; attribute on the CU.
> > >     >  ; CHECK: DW_TAG_compile_unit
> > >     >  ; CHECK-NOT: DW_AT_ranges
> > >     > -; CHECK: DW_TAG_subprogram
> > >     > +; CHECK: {{DW_TAG|NULL}}
> > >     >
> > >     >  ; FIXME: We probably want to avoid printing out anything if the
> section
> > >     isn't there.
> > >     >  ; CHECK: .debug_ranges contents:
> > >     >  ; CHECK-NOT: 00000000 <End of list>
> > >     >
> > >     > +; Check that we don't emit any pubnames or pubtypes under -gmlt
> > >     >  ; CHECK: .debug_pubnames contents:
> > >     >  ; CHECK-NOT: Offset
> > >     >
> > >     > @@ -19,33 +30,33 @@
> > >     >  ; CHECK-NOT: Offset
> > >     >
> > >     >  ; Function Attrs: nounwind uwtable
> > >     > -define i32 @f(i32 %a) #0 {
> > >     > +define void @f1() #0 {
> > >     >  entry:
> > >     > -  %a.addr = alloca i32, align 4
> > >     > -  store i32 %a, i32* %a.addr, align 4
> > >     > -  %0 = load i32* %a.addr, align 4, !dbg !14
> > >     > -  %add = add nsw i32 %0, 4, !dbg !14
> > >     > -  ret i32 %add, !dbg !14
> > >     > +  ret void, !dbg !11
> > >     >  }
> > >     >
> > >     > -; Function Attrs: nounwind readnone
> > >     > -declare void @llvm.dbg.declare(metadata, metadata) #1
> > >     > +; Function Attrs: nounwind uwtable
> > >     > +define void @f2() #0 section "bar" {
> > >     > +entry:
> > >     > +  ret void, !dbg !12
> > >     > +}
> > >     >
> > >     >  attributes #0 = { nounwind uwtable "less-precise-fpmad"="false"
> > >     "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf"
> > >     "no-infs-fp-math"="false" "no-nans-fp-math"="false"
> > >     "stack-protector-buffer-size"="8" "unsafe-fp-math"="false"
> > >     "use-soft-float"="false" }
> > >     > -attributes #1 = { nounwind readnone }
> > >     >
> > >     >  !llvm.dbg.cu = !{!0}
> > >     > -!llvm.module.flags = !{!9, !10}
> > >     > -!llvm.ident = !{!11}
> > >     > +!llvm.module.flags = !{!8, !9}
> > >     > +!llvm.ident = !{!10}
> > >     >
> > >     > -!0 = metadata !{i32 786449, metadata !1, i32 12, metadata
> !"clang
> > >     version 3.5 (trunk 197756) (llvm/trunk 197768)", i1 false,
> metadata !"",
> > >     i32 0, metadata !2, metadata !2, metadata !3, metadata !2,
> metadata !2,
> > >     metadata !"", i32 2} ; [ DW_TAG_compile_unit ]
> [/usr/local/google/home/
> > >     echristo/tmp/foo.c] [DW_LANG_C99]
> > >     > -!1 = metadata !{metadata !"foo.c", metadata
> !"/usr/local/google/home/
> > >     echristo/tmp"}
> > >     > +!0 = metadata !{i32 786449, metadata !1, i32 12, metadata
> !"clang
> > >     version 3.6.0 ", i1 false, metadata !"", i32 0, metadata !2,
> metadata !2,
> > >     metadata !3, metadata !2, metadata !2, metadata !"", i32 2} ; [
> > >     DW_TAG_compile_unit ] [/tmp/dbginfo/cu-line-tables.c] [DW_LANG_C99]
> > >     > +!1 = metadata !{metadata !"cu-line-tables.c", metadata
> !"/tmp/dbginfo"}
> > >     >  !2 = metadata !{}
> > >     > -!3 = metadata !{metadata !4}
> > >     > -!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata
> !"f",
> > >     metadata !"f", metadata !"", i32 1, metadata !6, i1 false, i1
> true, i32 0,
> > >     i32 0, null, i32 256, i1 false, i32 (i32)* @f, null, null,
> metadata !2,
> > >     i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [f]
> > >     > -!5 = metadata !{i32 786473, metadata !1}          ; [
> DW_TAG_file_type
> > >     ] [/usr/local/google/home/echristo/tmp/foo.c]
> > >     > +!3 = metadata !{metadata !4, metadata !7}
> > >     > +!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata
> !"f1",
> > >     metadata !"f1", metadata !"", i32 1, metadata !6, i1 false, i1
> true, i32
> > >     0, i32 0, null, i32 256, i1 false, void ()* @f1, null, null,
> metadata !2,
> > >     i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [f1]
> > >     > +!5 = metadata !{i32 786473, metadata !1}          ; [
> DW_TAG_file_type
> > >     ] [/tmp/dbginfo/cu-line-tables.c]
> > >     >  !6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0,
> i64 0,
> > >     i64 0, i64 0, i32 0, null, metadata !2, i32 0, null, null, null} ;
> [
> > >     DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from
> ]
> > >     > -!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
> > >     > -!10 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
> > >     > -!11 = metadata !{metadata !"clang version 3.5 (trunk 197756)
> (llvm/
> > >     trunk 197768)"}
> > >     > -!14 = metadata !{i32 2, i32 0, metadata !4, null}
> > >     > +!7 = metadata !{i32 786478, metadata !1, metadata !5, metadata
> !"f2",
> > >     metadata !"f2", metadata !"", i32 2, metadata !6, i1 false, i1
> true, i32
> > >     0, i32 0, null, i32 256, i1 false, void ()* @f2, null, null,
> metadata !2,
> > >     i32 2} ; [ DW_TAG_subprogram ] [line 2] [def] [f2]
> > >     > +!8 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
> > >     > +!9 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}
> > >     > +!10 = metadata !{metadata !"clang version 3.6.0 "}
> > >     > +!11 = metadata !{i32 1, i32 16, metadata !4, null}
> > >     > +!12 = metadata !{i32 2, i32 48, metadata !7, null}
> > >     >
> > >     >
> > >     > _______________________________________________
> > >     > llvm-commits mailing list
> > >     > llvm-commits at cs.uiuc.edu
> > >     > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> > >     _______________________________________________
> > >     llvm-commits mailing list
> > >     llvm-commits at cs.uiuc.edu
> > >     http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140806/9b396eee/attachment.html>


More information about the llvm-commits mailing list