blob: 71aa14170badde0ebdae1e6c59a697be523cbeb7 [file] [log] [blame]
Manman Renaec2ce72013-01-31 21:19:18 +00001; RUN: llvm-link %s %p/DbgDeclare2.ll -o %t.bc
2; RUN: llvm-dis < %t.bc | FileCheck %s
3; Test if metadata in dbg.declare is mapped properly or not.
4
5; rdar://13089880
6; CHECK: define i32 @main(i32 %argc, i8** %argv)
Adrian Prantl87b7eb92014-10-01 18:55:02 +00007; CHECK: call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !{{[0-9]+}}, metadata {{.*}})
8; CHECK: call void @llvm.dbg.declare(metadata !{i8*** %argv.addr}, metadata !{{[0-9]+}}, metadata {{.*}})
Manman Renaec2ce72013-01-31 21:19:18 +00009; CHECK: define void @test(i32 %argc, i8** %argv)
Adrian Prantl87b7eb92014-10-01 18:55:02 +000010; CHECK: call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !{{[0-9]+}}, metadata {{.*}})
11; CHECK: call void @llvm.dbg.declare(metadata !{i8*** %argv.addr}, metadata !{{[0-9]+}}, metadata {{.*}})
12; CHECK: call void @llvm.dbg.declare(metadata !{i32* %i}, metadata !{{[0-9]+}}, metadata {{.*}})
Manman Renaec2ce72013-01-31 21:19:18 +000013
14target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
15target triple = "x86_64-apple-macosx10.9.0"
16
17define i32 @main(i32 %argc, i8** %argv) uwtable ssp {
18entry:
19 %retval = alloca i32, align 4
20 %argc.addr = alloca i32, align 4
21 %argv.addr = alloca i8**, align 8
22 store i32 0, i32* %retval
23 store i32 %argc, i32* %argc.addr, align 4
Adrian Prantl87b7eb92014-10-01 18:55:02 +000024 call void @llvm.dbg.declare(metadata !{i32* %argc.addr}, metadata !14, metadata !{i32 786690}), !dbg !15
Manman Renaec2ce72013-01-31 21:19:18 +000025 store i8** %argv, i8*** %argv.addr, align 8
Adrian Prantl87b7eb92014-10-01 18:55:02 +000026 call void @llvm.dbg.declare(metadata !{i8*** %argv.addr}, metadata !16, metadata !{i32 786690}), !dbg !15
Manman Renaec2ce72013-01-31 21:19:18 +000027 %0 = load i32* %argc.addr, align 4, !dbg !17
28 %1 = load i8*** %argv.addr, align 8, !dbg !17
29 call void @test(i32 %0, i8** %1), !dbg !17
30 ret i32 0, !dbg !19
31}
32
Adrian Prantl87b7eb92014-10-01 18:55:02 +000033declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
Manman Renaec2ce72013-01-31 21:19:18 +000034
35declare void @test(i32, i8**)
36
37!llvm.dbg.cu = !{!0}
Manman Ren409558f2013-11-22 21:49:45 +000038!llvm.module.flags = !{!21}
Manman Renaec2ce72013-01-31 21:19:18 +000039
Manman Rencc4e4d82013-07-26 20:04:30 +000040!0 = metadata !{i32 786449, metadata !20, i32 4, metadata !"clang version 3.3 (trunk 173515)", i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, null, metadata !""} ; [ DW_TAG_compile_unit ]
Manman Renaec2ce72013-01-31 21:19:18 +000041!1 = metadata !{metadata !2}
42!2 = metadata !{i32 0}
Manman Rencc4e4d82013-07-26 20:04:30 +000043!3 = metadata !{metadata !5}
44!5 = metadata !{i32 786478, metadata !20, null, metadata !"main", metadata !"main", metadata !"", i32 3, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 (i32, i8**)* @main, null, null, metadata !1, i32 4} ; [ DW_TAG_subprogram ]
45!6 = metadata !{i32 786473, metadata !20} ; [ DW_TAG_file_type ]
Manman Renf2a88f32013-09-08 03:11:54 +000046!7 = metadata !{i32 786453, i32 0, null, i32 0, 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 ]
Manman Renaec2ce72013-01-31 21:19:18 +000047!8 = metadata !{metadata !9, metadata !9, metadata !10}
Manman Ren58737702013-07-25 19:33:30 +000048!9 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
Manman Renf2a88f32013-09-08 03:11:54 +000049!10 = metadata !{i32 786447, null, null, null, i32 0, i64 64, i64 64, i64 0, i32 0, metadata !11} ; [ DW_TAG_pointer_type ]
50!11 = metadata !{i32 786447, null, null, null, i32 0, i64 64, i64 64, i64 0, i32 0, metadata !12} ; [ DW_TAG_pointer_type ]
51!12 = metadata !{i32 786470, null, null, null, i32 0, i64 0, i64 0, i64 0, i32 0, metadata !13} ; [ DW_TAG_const_type ]
Manman Ren58737702013-07-25 19:33:30 +000052!13 = metadata !{i32 786468, null, null, metadata !"char", i32 0, i64 8, i64 8, i64 0, i32 0, i32 6} ; [ DW_TAG_base_type ]
Manman Renaec2ce72013-01-31 21:19:18 +000053!14 = metadata !{i32 786689, metadata !5, metadata !"argc", metadata !6, i32 16777219, metadata !9, i32 0, i32 0} ; [ DW_TAG_arg_variable ]
54!15 = metadata !{i32 3, i32 0, metadata !5, null}
55!16 = metadata !{i32 786689, metadata !5, metadata !"argv", metadata !6, i32 33554435, metadata !10, i32 0, i32 0} ; [ DW_TAG_arg_variable ]
56!17 = metadata !{i32 5, i32 0, metadata !18, null}
Manman Rencc4e4d82013-07-26 20:04:30 +000057!18 = metadata !{i32 786443, metadata !20, metadata !5, i32 4, i32 0, i32 0} ; [ DW_TAG_lexical_block ]
Manman Renaec2ce72013-01-31 21:19:18 +000058!19 = metadata !{i32 6, i32 0, metadata !18, null}
Manman Rencc4e4d82013-07-26 20:04:30 +000059!20 = metadata !{metadata !"main.cpp", metadata !"/private/tmp"}
Manman Ren409558f2013-11-22 21:49:45 +000060!21 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}