blob: eb5c8a966eb9b177f427897ccc22e696c7653d34 [file] [log] [blame]
Daniel Dunbaracbdf532010-06-25 23:14:54 +00001; RUN: llc < %s
2
3target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32-n32"
4target triple = "thumbv7-apple-darwin3.0.0-iphoneos"
5
6@length = common global i32 0, align 4 ; <i32*> [#uses=1]
7
8define void @x0(i8* nocapture %buf, i32 %nbytes) nounwind optsize {
9entry:
Adrian Prantl87b7eb92014-10-01 18:55:02 +000010 tail call void @llvm.dbg.value(metadata !{i8* %buf}, i64 0, metadata !0, metadata !{i32 786690}), !dbg !15
11 tail call void @llvm.dbg.value(metadata !{i32 %nbytes}, i64 0, metadata !8, metadata !{i32 786690}), !dbg !16
Daniel Dunbaracbdf532010-06-25 23:14:54 +000012 %tmp = load i32* @length, !dbg !17 ; <i32> [#uses=3]
13 %cmp = icmp eq i32 %tmp, -1, !dbg !17 ; <i1> [#uses=1]
14 %cmp.not = xor i1 %cmp, true ; <i1> [#uses=1]
15 %cmp3 = icmp ult i32 %tmp, %nbytes, !dbg !17 ; <i1> [#uses=1]
16 %or.cond = and i1 %cmp.not, %cmp3 ; <i1> [#uses=1]
Adrian Prantl87b7eb92014-10-01 18:55:02 +000017 tail call void @llvm.dbg.value(metadata !{i32 %tmp}, i64 0, metadata !8, metadata !{i32 786690}), !dbg !17
Daniel Dunbaracbdf532010-06-25 23:14:54 +000018 %nbytes.addr.0 = select i1 %or.cond, i32 %tmp, i32 %nbytes ; <i32> [#uses=1]
Adrian Prantl87b7eb92014-10-01 18:55:02 +000019 tail call void @llvm.dbg.value(metadata !18, i64 0, metadata !10, metadata !{i32 786690}), !dbg !19
Daniel Dunbaracbdf532010-06-25 23:14:54 +000020 br label %while.cond, !dbg !20
21
22while.cond: ; preds = %while.body, %entry
23 %0 = phi i32 [ 0, %entry ], [ %inc, %while.body ] ; <i32> [#uses=3]
24 %buf.addr.0 = getelementptr i8* %buf, i32 %0 ; <i8*> [#uses=1]
25 %cmp7 = icmp ult i32 %0, %nbytes.addr.0, !dbg !20 ; <i1> [#uses=1]
26 br i1 %cmp7, label %land.rhs, label %while.end, !dbg !20
27
28land.rhs: ; preds = %while.cond
29 %call = tail call i32 @x1() nounwind optsize, !dbg !20 ; <i32> [#uses=2]
30 %cmp9 = icmp eq i32 %call, -1, !dbg !20 ; <i1> [#uses=1]
31 br i1 %cmp9, label %while.end, label %while.body, !dbg !20
32
33while.body: ; preds = %land.rhs
34 %conv = trunc i32 %call to i8, !dbg !21 ; <i8> [#uses=1]
35 store i8 %conv, i8* %buf.addr.0, !dbg !21
36 %inc = add i32 %0, 1, !dbg !23 ; <i32> [#uses=1]
37 br label %while.cond, !dbg !24
38
39while.end: ; preds = %land.rhs, %while.cond
40 ret void, !dbg !25
41}
42
43declare i32 @x1() optsize
44
Adrian Prantl87b7eb92014-10-01 18:55:02 +000045declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone
Daniel Dunbaracbdf532010-06-25 23:14:54 +000046
47!llvm.dbg.lv.fn = !{!0, !8, !10, !12}
48!llvm.dbg.gv = !{!14}
49
50!0 = metadata !{i32 524545, metadata !1, metadata !"buf", metadata !2, i32 4, metadata !6} ; [ DW_TAG_arg_variable ]
Manman Ren58737702013-07-25 19:33:30 +000051!1 = metadata !{i32 524334, metadata !26, null, metadata !"x0", metadata !"x0", metadata !"x0", i32 5, metadata !4, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ]
52!2 = metadata !{i32 524329, metadata !26} ; [ DW_TAG_file_type ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000053!3 = metadata !{i32 524305, i32 0, i32 12, metadata !"t.c", metadata !".", metadata !"clang 2.0", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
Manman Ren58737702013-07-25 19:33:30 +000054!4 = metadata !{i32 524309, metadata !26, metadata !2, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !5, i32 0, null} ; [ DW_TAG_subroutine_type ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000055!5 = metadata !{null}
Manman Ren58737702013-07-25 19:33:30 +000056!6 = metadata !{i32 524303, metadata !26, metadata !2, metadata !"", i32 0, i64 32, i64 32, i64 0, i32 0, metadata !7} ; [ DW_TAG_pointer_type ]
57!7 = metadata !{i32 524324, metadata !26, metadata !2, metadata !"unsigned char", i32 0, i64 8, i64 8, i64 0, i32 0, i32 8} ; [ DW_TAG_base_type ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000058!8 = metadata !{i32 524545, metadata !1, metadata !"nbytes", metadata !2, i32 4, metadata !9} ; [ DW_TAG_arg_variable ]
Manman Ren58737702013-07-25 19:33:30 +000059!9 = metadata !{i32 524324, metadata !26, metadata !2, metadata !"unsigned long", i32 0, i64 32, i64 32, i64 0, i32 0, i32 7} ; [ DW_TAG_base_type ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000060!10 = metadata !{i32 524544, metadata !11, metadata !"nread", metadata !2, i32 6, metadata !9} ; [ DW_TAG_auto_variable ]
Manman Ren58737702013-07-25 19:33:30 +000061!11 = metadata !{i32 524299, metadata !26, metadata !1, i32 5, i32 1, i32 0} ; [ DW_TAG_lexical_block ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000062!12 = metadata !{i32 524544, metadata !11, metadata !"c", metadata !2, i32 7, metadata !13} ; [ DW_TAG_auto_variable ]
Manman Ren58737702013-07-25 19:33:30 +000063!13 = metadata !{i32 524324, metadata !26, metadata !2, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000064!14 = metadata !{i32 524340, i32 0, metadata !2, metadata !"length", metadata !"length", metadata !"length", metadata !2, i32 1, metadata !13, i1 false, i1 true, i32* @length} ; [ DW_TAG_variable ]
65!15 = metadata !{i32 4, i32 24, metadata !1, null}
66!16 = metadata !{i32 4, i32 43, metadata !1, null}
67!17 = metadata !{i32 9, i32 2, metadata !11, null}
68!18 = metadata !{i32 0}
69!19 = metadata !{i32 10, i32 2, metadata !11, null}
70!20 = metadata !{i32 11, i32 2, metadata !11, null}
71!21 = metadata !{i32 12, i32 3, metadata !22, null}
Manman Ren58737702013-07-25 19:33:30 +000072!22 = metadata !{i32 524299, metadata !26, metadata !11, i32 11, i32 45, i32 0} ; [ DW_TAG_lexical_block ]
Daniel Dunbaracbdf532010-06-25 23:14:54 +000073!23 = metadata !{i32 13, i32 3, metadata !22, null}
74!24 = metadata !{i32 14, i32 2, metadata !22, null}
75!25 = metadata !{i32 15, i32 1, metadata !11, null}
Manman Ren58737702013-07-25 19:33:30 +000076!26 = metadata !{metadata !"t.c", metadata !"/private/tmp"}