1; RUN: llc -mtriple=hexagon -hexagon-emit-jump-tables=0 < %s 2; REQUIRES: asserts 3; Check for successful compilation. 4 5target triple = "hexagon" 6 7%s.0 = type opaque 8%s.1 = type { i32, i32, i32 } 9 10@g0 = external global %s.0 11@g1 = external global %s.0 12@g2 = external global %s.0 13@g3 = external global %s.0 14@g4 = external global %s.0 15 16; Function Attrs: nounwind optsize 17define zeroext i8 @f0(ptr %a0, ptr nocapture %a1) #0 { 18b0: 19 store ptr null, ptr %a1, align 4, !tbaa !0 20 %v0 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 1 21 %v1 = load i32, ptr %v0, align 4, !tbaa !4 22 %v2 = icmp eq i32 %v1, 0 23 br i1 %v2, label %b1, label %b8 24 25b1: ; preds = %b0 26 %v4 = load i32, ptr %a0, align 4, !tbaa !7 27 switch i32 %v4, label %b8 [ 28 i32 0, label %b2 29 i32 1, label %b4 30 i32 4, label %b5 31 i32 5, label %b6 32 i32 2, label %b7 33 ] 34 35b2: ; preds = %b1 36 %v5 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 2 37 %v6 = load i32, ptr %v5, align 4, !tbaa !8 38 switch i32 %v6, label %b8 [ 39 i32 27, label %b3 40 i32 44, label %b3 41 ] 42 43b3: ; preds = %b7, %b7, %b7, %b6, %b6, %b5, %b5, %b4, %b4, %b2, %b2 44 %v7 = phi ptr [ @g0, %b2 ], [ @g0, %b2 ], [ @g1, %b4 ], [ @g1, %b4 ], [ @g2, %b5 ], [ @g2, %b5 ], [ @g3, %b6 ], [ @g3, %b6 ], [ @g4, %b7 ], [ @g4, %b7 ], [ @g4, %b7 ] 45 store ptr %v7, ptr %a1, align 4, !tbaa !0 46 br label %b8 47 48b4: ; preds = %b1 49 %v8 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 2 50 %v9 = load i32, ptr %v8, align 4, !tbaa !8 51 switch i32 %v9, label %b8 [ 52 i32 27, label %b3 53 i32 44, label %b3 54 ] 55 56b5: ; preds = %b1 57 %v10 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 2 58 %v11 = load i32, ptr %v10, align 4, !tbaa !8 59 switch i32 %v11, label %b8 [ 60 i32 27, label %b3 61 i32 44, label %b3 62 ] 63 64b6: ; preds = %b1 65 %v12 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 2 66 %v13 = load i32, ptr %v12, align 4, !tbaa !8 67 switch i32 %v13, label %b8 [ 68 i32 27, label %b3 69 i32 44, label %b3 70 ] 71 72b7: ; preds = %b1 73 %v14 = getelementptr inbounds %s.1, ptr %a0, i32 0, i32 2 74 %v15 = load i32, ptr %v14, align 4, !tbaa !8 75 switch i32 %v15, label %b8 [ 76 i32 40, label %b3 77 i32 46, label %b3 78 i32 47, label %b3 79 ] 80 81b8: ; preds = %b7, %b6, %b5, %b4, %b3, %b2, %b1, %b0 82 %v16 = phi i8 [ 1, %b3 ], [ 0, %b0 ], [ 0, %b2 ], [ 0, %b4 ], [ 0, %b5 ], [ 0, %b6 ], [ 0, %b1 ], [ 0, %b7 ] 83 ret i8 %v16 84} 85 86attributes #0 = { nounwind optsize } 87 88!0 = !{!1, !1, i64 0} 89!1 = !{!"any pointer", !2, i64 0} 90!2 = !{!"omnipotent char", !3, i64 0} 91!3 = !{!"Simple C/C++ TBAA"} 92!4 = !{!5, !6, i64 4} 93!5 = !{!"_ZTS3bar", !6, i64 0, !6, i64 4, !6, i64 8} 94!6 = !{!"int", !2, i64 0} 95!7 = !{!5, !6, i64 0} 96!8 = !{!5, !6, i64 8} 97