@@ -56,8 +56,48 @@ do.end:
5656 ret void
5757}
5858
59+ ; CHECK-LABEL: @zot
60+ ; CHECK: bb:
61+ ; CHECK-NOT: getelementptr
62+ ; CHECK: bb12:
63+ ; CHECK: getelementptr
64+ ; CHECK: getelementptr
65+ ; CHECK: call void @bar
66+
67+ define void @zot (ptr addrspace (200 ) %arg ) {
68+ bb:
69+ %alloca = alloca [25 x i64 ], align 8 , addrspace (200 )
70+ br label %bb8
71+
72+ bb8:
73+ %phi = phi i32 [ 0 , %bb ], [ %add16 , %bb14 ]
74+ %phi9 = phi i32 [ 0 , %bb ], [ %select , %bb14 ]
75+ %icmp = icmp ult i32 %phi9 , 256
76+ br i1 %icmp , label %bb10 , label %bb17
77+
78+ bb10:
79+ %icmp11 = icmp eq i32 %phi , 4
80+ br i1 %icmp11 , label %bb12 , label %bb14
81+
82+ bb12:
83+ %getelementptr = getelementptr inbounds nuw i16 , ptr addrspace (200 ) %arg , i32 %phi9
84+ %getelementptr13 = getelementptr inbounds i8 , ptr addrspace (200 ) %getelementptr , i32 -6
85+ call void @bar (ptr addrspace (200 ) %getelementptr13 )
86+ br label %bb14
87+
88+ bb14:
89+ %icmp15 = icmp ne i32 %phi9 , 255
90+ %add = add nuw nsw i32 %phi9 , 2
91+ %zext = zext i1 %icmp15 to i32
92+ %add16 = add i32 %zext , %phi
93+ %select = select i1 %icmp15 , i32 %add , i32 256
94+ br label %bb8
95+
96+ bb17:
97+ ret void
98+ }
5999
60- declare void @bar (ptr addrspace (200 ) noundef )
100+ declare void @bar (ptr addrspace (200 ))
61101
62102!llvm.module.flags = !{!0 }
63103!0 = !{i32 1 , !"target-abi" , !"cheriot" }
0 commit comments