158 lines · plain
1; RUN: llc -mtriple=hexagon -relocation-model=pic -O2 < %s | FileCheck %s2; CHECK: r{{[0-9]+}} = add(pc,##.Ltmp0@PCREL)3; CHECK-NOT: r{{[0-9]+}} = ##.Ltmp04 5target triple = "hexagon"6 7%s.0 = type { [7 x ptr], [7 x ptr], [12 x ptr], [12 x ptr], [2 x ptr], ptr, ptr, ptr, ptr }8%s.1 = type { i32, i32, i32, i32, i32, i32, i32, i32, i32 }9 10@g0 = private unnamed_addr constant [4 x i8] c"Sun\00", align 111@g1 = private unnamed_addr constant [4 x i8] c"Mon\00", align 112@g2 = private unnamed_addr constant [4 x i8] c"Tue\00", align 113@g3 = private unnamed_addr constant [4 x i8] c"Wed\00", align 114@g4 = private unnamed_addr constant [4 x i8] c"Thu\00", align 115@g5 = private unnamed_addr constant [4 x i8] c"Fri\00", align 116@g6 = private unnamed_addr constant [4 x i8] c"Sat\00", align 117@g7 = private unnamed_addr constant [7 x i8] c"Sunday\00", align 118@g8 = private unnamed_addr constant [7 x i8] c"Monday\00", align 119@g9 = private unnamed_addr constant [8 x i8] c"Tuesday\00", align 120@g10 = private unnamed_addr constant [10 x i8] c"Wednesday\00", align 121@g11 = private unnamed_addr constant [9 x i8] c"Thursday\00", align 122@g12 = private unnamed_addr constant [7 x i8] c"Friday\00", align 123@g13 = private unnamed_addr constant [9 x i8] c"Saturday\00", align 124@g14 = private unnamed_addr constant [4 x i8] c"Jan\00", align 125@g15 = private unnamed_addr constant [4 x i8] c"Feb\00", align 126@g16 = private unnamed_addr constant [4 x i8] c"Mar\00", align 127@g17 = private unnamed_addr constant [4 x i8] c"Apr\00", align 128@g18 = private unnamed_addr constant [4 x i8] c"May\00", align 129@g19 = private unnamed_addr constant [4 x i8] c"Jun\00", align 130@g20 = private unnamed_addr constant [4 x i8] c"Jul\00", align 131@g21 = private unnamed_addr constant [4 x i8] c"Aug\00", align 132@g22 = private unnamed_addr constant [4 x i8] c"Sep\00", align 133@g23 = private unnamed_addr constant [4 x i8] c"Oct\00", align 134@g24 = private unnamed_addr constant [4 x i8] c"Nov\00", align 135@g25 = private unnamed_addr constant [4 x i8] c"Dec\00", align 136@g26 = private unnamed_addr constant [8 x i8] c"January\00", align 137@g27 = private unnamed_addr constant [9 x i8] c"February\00", align 138@g28 = private unnamed_addr constant [6 x i8] c"March\00", align 139@g29 = private unnamed_addr constant [6 x i8] c"April\00", align 140@g30 = private unnamed_addr constant [5 x i8] c"June\00", align 141@g31 = private unnamed_addr constant [5 x i8] c"July\00", align 142@g32 = private unnamed_addr constant [7 x i8] c"August\00", align 143@g33 = private unnamed_addr constant [10 x i8] c"September\00", align 144@g34 = private unnamed_addr constant [8 x i8] c"October\00", align 145@g35 = private unnamed_addr constant [9 x i8] c"November\00", align 146@g36 = private unnamed_addr constant [9 x i8] c"December\00", align 147@g37 = private unnamed_addr constant [3 x i8] c"AM\00", align 148@g38 = private unnamed_addr constant [3 x i8] c"PM\00", align 149@g39 = private unnamed_addr constant [21 x i8] c"%a %b %e %H:%M:%S %Y\00", align 150@g40 = private unnamed_addr constant [9 x i8] c"%m/%d/%y\00", align 151@g41 = private unnamed_addr constant [9 x i8] c"%H:%M:%S\00", align 152@g42 = private unnamed_addr constant [12 x i8] c"%I:%M:%S %p\00", align 153@g43 = constant %s.0 { [7 x ptr] [ptr @g0, ptr @g1, ptr @g2, ptr @g3, ptr @g4, ptr @g5, ptr @g6], [7 x ptr] [ptr @g7, ptr @g8, ptr @g9, ptr @g10, ptr @g11, ptr @g12, ptr @g13], [12 x ptr] [ptr @g14, ptr @g15, ptr @g16, ptr @g17, ptr @g18, ptr @g19, ptr @g20, ptr @g21, ptr @g22, ptr @g23, ptr @g24, ptr @g25], [12 x ptr] [ptr @g26, ptr @g27, ptr @g28, ptr @g29, ptr @g18, ptr @g30, ptr @g31, ptr @g32, ptr @g33, ptr @g34, ptr @g35, ptr @g36], [2 x ptr] [ptr @g37, ptr @g38], ptr @g39, ptr @g40, ptr @g41, ptr @g42 }, align 454@g44 = global ptr @g43, align 455@g45 = private unnamed_addr constant [6 x i8] c"%H:%M\00", align 156 57; Function Attrs: nounwind readonly58define ptr @f0(ptr readonly %a0, ptr nocapture readonly %a1, ptr readonly %a2) #0 {59b0:60 %v0 = icmp eq ptr %a0, null61 br i1 %v0, label %b15, label %b162 63b1: ; preds = %b064 %v1 = load ptr, ptr @g44, align 4, !tbaa !065 %v2 = getelementptr inbounds %s.0, ptr %v1, i32 0, i32 566 %v3 = getelementptr inbounds %s.0, ptr %v1, i32 0, i32 667 br label %b268 69b2: ; preds = %b14, %b6, %b170 %v4 = phi i32 [ undef, %b1 ], [ %v31, %b14 ], [ 0, %b6 ]71 %v5 = phi ptr [ %a0, %b1 ], [ %v30, %b14 ], [ %v18, %b6 ]72 %v6 = phi ptr [ %a1, %b1 ], [ %v13, %b14 ], [ %v13, %b6 ]73 %v7 = load i8, ptr %v6, align 1, !tbaa !474 %v8 = icmp eq i8 %v7, 075 br i1 %v8, label %b15, label %b376 77b3: ; preds = %b278 %v9 = getelementptr inbounds i8, ptr %v6, i32 179 br label %b480 81b4: ; preds = %b7, %b382 %v10 = phi ptr [ %v6, %b3 ], [ %v11, %b7 ]83 %v11 = phi ptr [ %v9, %b3 ], [ %v13, %b7 ]84 %v12 = phi i32 [ %v4, %b3 ], [ %v21, %b7 ]85 %v13 = getelementptr inbounds i8, ptr %v10, i32 286 %v14 = load i8, ptr %v11, align 1, !tbaa !487 %v15 = zext i8 %v14 to i3288 switch i32 %v15, label %b15 [89 i32 37, label %b590 i32 69, label %b791 i32 79, label %b892 i32 99, label %b1393 i32 68, label %b994 i32 82, label %b1095 i32 120, label %b1296 ]97 98b5: ; preds = %b499 %v16 = load i8, ptr %v5, align 1, !tbaa !4100 %v17 = icmp eq i8 %v14, %v16101 br i1 %v17, label %b6, label %b15102 103b6: ; preds = %b5104 %v18 = getelementptr inbounds i8, ptr %v5, i32 1105 %v19 = icmp eq i32 %v12, 0106 br i1 %v19, label %b2, label %b15107 108b7: ; preds = %b10, %b9, %b8, %b4109 %v20 = phi ptr [ blockaddress(@f0, %b4), %b8 ], [ blockaddress(@f0, %b11), %b9 ], [ blockaddress(@f0, %b11), %b10 ], [ blockaddress(@f0, %b4), %b4 ]110 %v21 = phi i32 [ 2, %b8 ], [ 1, %b9 ], [ 1, %b10 ], [ 1, %b4 ]111 %v22 = phi ptr [ @g40, %b8 ], [ @g40, %b9 ], [ @g45, %b10 ], [ @g40, %b4 ]112 %v23 = icmp eq i32 %v12, 0113 %v24 = select i1 %v23, ptr %v20, ptr blockaddress(@f0, %b15)114 indirectbr ptr %v24, [label %b4, label %b11, label %b15]115 116b8: ; preds = %b4117 br label %b7118 119b9: ; preds = %b4120 br label %b7121 122b10: ; preds = %b4123 br label %b7124 125b11: ; preds = %b7126 %v25 = tail call ptr @f0(ptr %v5, ptr %v22, ptr %a2) #1127 br label %b14128 129b12: ; preds = %b4130 br label %b13131 132b13: ; preds = %b12, %b4133 %v26 = phi ptr [ %v3, %b12 ], [ %v2, %b4 ]134 %v27 = load ptr, ptr %v26, align 4135 %v28 = tail call ptr @f0(ptr %v5, ptr %v27, ptr %a2) #1136 %v29 = icmp ugt i32 %v12, 1137 br i1 %v29, label %b15, label %b14138 139b14: ; preds = %b13, %b11140 %v30 = phi ptr [ %v28, %b13 ], [ %v25, %b11 ]141 %v31 = phi i32 [ %v12, %b13 ], [ 0, %b11 ]142 %v32 = icmp eq ptr %v30, null143 br i1 %v32, label %b15, label %b2144 145b15: ; preds = %b14, %b13, %b7, %b6, %b5, %b4, %b2, %b0146 %v33 = phi ptr [ null, %b0 ], [ null, %b4 ], [ null, %b7 ], [ null, %b13 ], [ null, %b14 ], [ %v5, %b2 ], [ null, %b5 ], [ null, %b6 ]147 ret ptr %v33148}149 150attributes #0 = { nounwind readonly }151attributes #1 = { nobuiltin nounwind }152 153!0 = !{!1, !1, i64 0}154!1 = !{!"any pointer", !2, i64 0}155!2 = !{!"omnipotent char", !3, i64 0}156!3 = !{!"Simple C/C++ TBAA"}157!4 = !{!2, !2, i64 0}158