blob: c4d663c5a367031c7c7620b19a8cfa43930124b3 [file] [log] [blame]
Eli Benderskyb42d1462012-12-03 18:45:45 +00001; For http://llvm.org/bugs/show_bug.cgi?id=12942
2; There are two CUs coming from /tmp/foo.c in this module. Make sure it doesn't
3; blow llc up and produces something reasonable.
4;
5
Jyotsna Verma9dea0952013-04-10 19:53:26 +00006; REQUIRES: object-emission
7
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +00008; RUN: %llc_dwarf %s -o %t -filetype=obj -O0
Eli Benderskye6abe832013-01-25 21:44:53 +00009; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s
Eli Benderskyb42d1462012-12-03 18:45:45 +000010
11; ModuleID = 'test.bc'
12
13@str = private unnamed_addr constant [4 x i8] c"FOO\00"
14@str1 = private unnamed_addr constant [6 x i8] c"Main!\00"
15
16define void @foo() nounwind {
17entry:
18 %puts = tail call i32 @puts(i8* getelementptr inbounds ([4 x i8]* @str, i32 0, i32 0)), !dbg !23
19 ret void, !dbg !25
20}
21
22declare i32 @puts(i8* nocapture) nounwind
23
24define i32 @main(i32 %argc, i8** nocapture %argv) nounwind {
25entry:
26 tail call void @llvm.dbg.value(metadata !{i32 %argc}, i64 0, metadata !21), !dbg !26
27 tail call void @llvm.dbg.value(metadata !{i8** %argv}, i64 0, metadata !22), !dbg !27
28 %puts = tail call i32 @puts(i8* getelementptr inbounds ([6 x i8]* @str1, i32 0, i32 0)), !dbg !28
29 tail call void @foo() nounwind, !dbg !30
30 ret i32 0, !dbg !31
31}
32
33declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
34
35!llvm.dbg.cu = !{!0, !9}
Manman Ren409558f2013-11-22 21:49:45 +000036!llvm.module.flags = !{!33}
Eli Benderskyb42d1462012-12-03 18:45:45 +000037
David Blaikief55abea2013-04-22 06:12:31 +000038!0 = metadata !{i32 786449, metadata !32, i32 12, metadata !"clang version 3.2 (trunk 156513)", i1 true, metadata !"", i32 0, metadata !1, metadata !1, metadata !3, metadata !1, metadata !1, metadata !""} ; [ DW_TAG_compile_unit ]
David Blaikie5e390e42014-02-04 01:23:52 +000039!1 = metadata !{}
David Blaikie33111df2013-02-02 05:56:24 +000040!3 = metadata !{metadata !5}
Manman Rene1fb9432013-07-25 06:43:01 +000041!5 = metadata !{i32 786478, metadata !32, metadata !6, metadata !"foo", metadata !"foo", metadata !"", i32 5, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, void ()* @foo, null, null, metadata !1, i32 5} ; [ DW_TAG_subprogram ]
David Blaikie8fb82242013-03-17 21:13:55 +000042!6 = metadata !{i32 786473, metadata !32} ; [ DW_TAG_file_type ]
Manman Rendeeafd82013-09-06 21:03:58 +000043!7 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
Eli Benderskyb42d1462012-12-03 18:45:45 +000044!8 = metadata !{null}
David Blaikief55abea2013-04-22 06:12:31 +000045!9 = metadata !{i32 786449, metadata !32, i32 12, metadata !"clang version 3.2 (trunk 156513)", i1 true, metadata !"", i32 0, metadata !1, metadata !1, metadata !10, metadata !1, metadata !1, metadata !""} ; [ DW_TAG_compile_unit ]
David Blaikie33111df2013-02-02 05:56:24 +000046!10 = metadata !{metadata !12}
Manman Rene1fb9432013-07-25 06:43:01 +000047!12 = metadata !{i32 786478, metadata !32, metadata !6, metadata !"main", metadata !"main", metadata !"", i32 11, metadata !13, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 true, i32 (i32, i8**)* @main, null, null, metadata !19, i32 11} ; [ DW_TAG_subprogram ]
Manman Rendeeafd82013-09-06 21:03:58 +000048!13 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !14, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
Eli Benderskyb42d1462012-12-03 18:45:45 +000049!14 = metadata !{metadata !15, metadata !15, metadata !16}
Manman Rene1fb9432013-07-25 06:43:01 +000050!15 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
51!16 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 32, i64 32, i64 0, i32 0, metadata !17} ; [ DW_TAG_pointer_type ]
52!17 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 32, i64 32, i64 0, i32 0, metadata !18} ; [ DW_TAG_pointer_type ]
53!18 = metadata !{i32 786468, null, null, metadata !"char", i32 0, i64 8, i64 8, i64 0, i32 0, i32 6} ; [ DW_TAG_base_type ]
Eli Benderskyb42d1462012-12-03 18:45:45 +000054!19 = metadata !{metadata !20}
55!20 = metadata !{metadata !21, metadata !22}
56!21 = metadata !{i32 786689, metadata !12, metadata !"argc", metadata !6, i32 16777227, metadata !15, i32 0, i32 0} ; [ DW_TAG_arg_variable ]
57!22 = metadata !{i32 786689, metadata !12, metadata !"argv", metadata !6, i32 33554443, metadata !16, i32 0, i32 0} ; [ DW_TAG_arg_variable ]
58!23 = metadata !{i32 6, i32 3, metadata !24, null}
Manman Rene1fb9432013-07-25 06:43:01 +000059!24 = metadata !{i32 786443, metadata !32, metadata !5, i32 5, i32 16, i32 0} ; [ DW_TAG_lexical_block ]
Eli Benderskyb42d1462012-12-03 18:45:45 +000060!25 = metadata !{i32 7, i32 1, metadata !24, null}
61!26 = metadata !{i32 11, i32 14, metadata !12, null}
62!27 = metadata !{i32 11, i32 26, metadata !12, null}
63!28 = metadata !{i32 12, i32 3, metadata !29, null}
Manman Rene1fb9432013-07-25 06:43:01 +000064!29 = metadata !{i32 786443, metadata !32, metadata !12, i32 11, i32 34, i32 0} ; [ DW_TAG_lexical_block ]
Eli Benderskyb42d1462012-12-03 18:45:45 +000065!30 = metadata !{i32 13, i32 3, metadata !29, null}
66!31 = metadata !{i32 14, i32 3, metadata !29, null}
David Blaikie8fb82242013-03-17 21:13:55 +000067!32 = metadata !{metadata !"foo.c", metadata !"/tmp"}
Eli Benderskyb42d1462012-12-03 18:45:45 +000068
Eli Bendersky5d7b1172012-12-03 19:58:12 +000069; This test is simple to be cross platform (many targets don't yet have
70; sufficiently good DWARF emission and/or dumping)
71; CHECK: {{DW_TAG_compile_unit}}
72; CHECK: {{foo\.c}}
Eli Benderskyb42d1462012-12-03 18:45:45 +000073
Manman Ren409558f2013-11-22 21:49:45 +000074!33 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}