blob: 5ebc256d164106f621029c455c0d83e2ebd9c240 [file] [log] [blame]
Eric Christopher4150a772013-12-20 04:34:50 +00001; REQUIRES: object-emission
Eric Christopher3a70d002014-03-14 20:53:43 +00002; RUN: %llc_dwarf -O0 -filetype=obj %s -o %t
Eric Christopher46e23432013-12-20 04:16:18 +00003; RUN: llvm-dwarfdump %t | FileCheck %s
4
Eric Christopher384f3fe2014-03-20 19:16:16 +00005; Check that we emit ranges for this which has a non-traditional section and a normal section.
Eric Christopher46e23432013-12-20 04:16:18 +00006
7; CHECK: DW_TAG_compile_unit
8; CHECK: DW_AT_ranges
9; CHECK: DW_TAG_subprogram
Eric Christopher384f3fe2014-03-20 19:16:16 +000010; CHECK: DW_AT_low_pc
11; CHECK: DW_AT_high_pc
12; CHECK: DW_TAG_subprogram
13; CHECK: DW_AT_low_pc
14; CHECK: DW_AT_high_pc
Eric Christopher46e23432013-12-20 04:16:18 +000015
16; CHECK: .debug_ranges contents:
17; FIXME: When we get better dumping facilities we'll want to elaborate here.
18; CHECK: 00000000 <End of list>
Eric Christopher46e23432013-12-20 04:16:18 +000019
20; Function Attrs: nounwind uwtable
Eric Christophera2a6e922014-03-14 21:16:54 +000021define i32 @foo(i32 %a) #0 section "__TEXT,__foo" {
Eric Christopher46e23432013-12-20 04:16:18 +000022entry:
23 %a.addr = alloca i32, align 4
24 store i32 %a, i32* %a.addr, align 4
Adrian Prantl87b7eb92014-10-01 18:55:02 +000025 call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !13, metadata !{i32 786690}), !dbg !14
Eric Christopher384f3fe2014-03-20 19:16:16 +000026 %0 = load i32* %a.addr, align 4, !dbg !15
27 %add = add nsw i32 %0, 5, !dbg !15
28 ret i32 %add, !dbg !15
Eric Christopher46e23432013-12-20 04:16:18 +000029}
30
31; Function Attrs: nounwind readnone
Adrian Prantl87b7eb92014-10-01 18:55:02 +000032declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
Eric Christopher46e23432013-12-20 04:16:18 +000033
Eric Christopher384f3fe2014-03-20 19:16:16 +000034; Function Attrs: nounwind uwtable
35define i32 @bar(i32 %a) #0 {
36entry:
37 %a.addr = alloca i32, align 4
38 store i32 %a, i32* %a.addr, align 4
Adrian Prantl87b7eb92014-10-01 18:55:02 +000039 call void @llvm.dbg.declare(metadata !{i32* %a.addr}, metadata !16, metadata !{i32 786690}), !dbg !17
Eric Christopher384f3fe2014-03-20 19:16:16 +000040 %0 = load i32* %a.addr, align 4, !dbg !18
41 %add = add nsw i32 %0, 5, !dbg !18
42 ret i32 %add, !dbg !18
43}
44
Eric Christopher46e23432013-12-20 04:16:18 +000045attributes #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" }
46attributes #1 = { nounwind readnone }
47
48!llvm.dbg.cu = !{!0}
Eric Christopher384f3fe2014-03-20 19:16:16 +000049!llvm.module.flags = !{!10, !11}
50!llvm.ident = !{!12}
Eric Christopher46e23432013-12-20 04:16:18 +000051
Eric Christopher384f3fe2014-03-20 19:16:16 +000052!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0 (trunk 204164) (llvm/trunk 204183)", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/usr/local/google/home/echristo/foo.c] [DW_LANG_C99]
Eric Christopher3a70d002014-03-14 20:53:43 +000053!1 = metadata !{metadata !"foo.c", metadata !"/usr/local/google/home/echristo"}
David Blaikie5e390e42014-02-04 01:23:52 +000054!2 = metadata !{}
Eric Christopher384f3fe2014-03-20 19:16:16 +000055!3 = metadata !{metadata !4, metadata !9}
Eric Christopher3a70d002014-03-14 20:53:43 +000056!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"foo", metadata !"foo", metadata !"", i32 1, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 (i32)* @foo, null, null, metadata !2, i32 1} ; [ DW_TAG_subprogram ] [line 1] [def] [foo]
57!5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/usr/local/google/home/echristo/foo.c]
Eric Christopher46e23432013-12-20 04:16:18 +000058!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
59!7 = metadata !{metadata !8, metadata !8}
60!8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
Eric Christopher384f3fe2014-03-20 19:16:16 +000061!9 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"bar", metadata !"bar", metadata !"", i32 5, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 (i32)* @bar, null, null, metadata !2, i32 5} ; [ DW_TAG_subprogram ] [line 5] [def] [bar]
62!10 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
63!11 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
64!12 = metadata !{metadata !"clang version 3.5.0 (trunk 204164) (llvm/trunk 204183)"}
65!13 = metadata !{i32 786689, metadata !4, metadata !"a", metadata !5, i32 16777217, metadata !8, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [a] [line 1]
66!14 = metadata !{i32 1, i32 0, metadata !4, null}
67!15 = metadata !{i32 2, i32 0, metadata !4, null}
68!16 = metadata !{i32 786689, metadata !9, metadata !"a", metadata !5, i32 16777221, metadata !8, i32 0, i32 0} ; [ DW_TAG_arg_variable ] [a] [line 5]
69!17 = metadata !{i32 5, i32 0, metadata !9, null}
70!18 = metadata !{i32 6, i32 0, metadata !9, null}
71