3
3
4
4
@g1 = external global i8
5
5
@g2 = external global [64 x i8 ]
6
+ @g3 = global i8 0 , align 1
6
7
7
8
define void @func () {
8
9
; CHECK-LABEL: define void @func() {
@@ -16,3 +17,23 @@ entry:
16
17
call void @llvm.memcpy.p0.p0.i64 (ptr @g1 , ptr getelementptr inbounds (i8 , ptr @g2 , i64 24 ), i64 1 , i1 false )
17
18
ret void
18
19
}
20
+
21
+ define void @func2 (ptr %p ) {
22
+ ; CHECK-LABEL: define void @func2(
23
+ ; CHECK-SAME: ptr [[P:%.*]]) {
24
+ ; CHECK-NEXT: [[ENTRY:.*:]]
25
+ ; CHECK-NEXT: [[GEP1:%.*]] = getelementptr i8, ptr [[P]], i64 32
26
+ ; CHECK-NEXT: [[GEP2:%.*]] = getelementptr i8, ptr [[P]], i64 34
27
+ ; CHECK-NEXT: [[GEP3:%.*]] = getelementptr i8, ptr [[P]], i64 32
28
+ ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[GEP1]], ptr [[GEP3]], i64 32, i1 false)
29
+ ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr @g3, ptr [[GEP2]], i64 1, i1 false)
30
+ ; CHECK-NEXT: ret void
31
+ ;
32
+ entry:
33
+ %gep1 = getelementptr i8 , ptr %p , i64 32
34
+ %gep2 = getelementptr i8 , ptr %p , i64 34
35
+ %gep3 = getelementptr i8 , ptr %p , i64 32
36
+ call void @llvm.memcpy.p0.p0.i64 (ptr %gep1 , ptr %gep3 , i64 32 , i1 false )
37
+ call void @llvm.memcpy.p0.p0.i64 (ptr @g3 , ptr %gep2 , i64 1 , i1 false )
38
+ ret void
39
+ }
0 commit comments