@@ -11,6 +11,10 @@ target triple = "x86_64--linux"
11
11
@main.sliceDstUntaint.buf = internal global [2 x i8 ] zeroinitializer
12
12
@main.sliceSrcTaint.buf = internal global [2 x i8 ] c "cd"
13
13
@main.sliceDstTaint.buf = internal global [2 x i8 ] zeroinitializer
14
+ @main.sliceSrcExternal1.buf = external global [2 x i8 ]
15
+ @main.sliceDstExternal1.buf = internal global [2 x i8 ] zeroinitializer
16
+ @main.sliceSrcExternal2.buf = internal global [2 x i8 ] zeroinitializer
17
+ @main.sliceDstExternal2.buf = external global [2 x i8 ]
14
18
15
19
declare i64 @runtime.sliceCopy (ptr %dst , ptr %src , i64 %dstLen , i64 %srcLen , i64 %elemSize ) unnamed_addr
16
20
@@ -58,6 +62,14 @@ entry:
58
62
%sliceDstTaint.val = load i8 , ptr getelementptr inbounds (i8 , ptr @main.sliceDstTaint.buf , i32 0 )
59
63
call void @runtime.printuint8 (i8 %sliceDstTaint.val )
60
64
65
+ ; print(sliceDstExternal1[0])
66
+ %sliceDstExternal1.val = load i8 , ptr getelementptr inbounds (i8 , ptr @main.sliceDstExternal1.buf , i32 0 )
67
+ call void @runtime.printuint8 (i8 %sliceDstExternal1.val )
68
+
69
+ ; print(sliceDstExternal2[0])
70
+ %sliceDstExternal2.val = load i8 , ptr getelementptr inbounds (i8 , ptr @main.sliceDstExternal2.buf , i32 0 )
71
+ call void @runtime.printuint8 (i8 %sliceDstExternal2.val )
72
+
61
73
ret void
62
74
}
63
75
@@ -102,5 +114,11 @@ entry:
102
114
call void @use (ptr @main.sliceSrcTaint.buf )
103
115
%copy.n4 = call i64 @runtime.sliceCopy (ptr @main.sliceDstTaint.buf , ptr @main.sliceSrcTaint.buf , i64 2 , i64 2 , i64 1 )
104
116
117
+ ; Test that copying from or into external buffers works correctly.
118
+ ; These copy operations must be done at runtime.
119
+ ; https://github.com/tinygo-org/tinygo/issues/4895
120
+ %copy.n5 = call i64 @runtime.sliceCopy (ptr @main.sliceDstExternal1.buf , ptr @main.sliceSrcExternal1.buf , i64 2 , i64 2 , i64 1 )
121
+ %copy.n6 = call i64 @runtime.sliceCopy (ptr @main.sliceDstExternal2.buf , ptr @main.sliceSrcExternal2.buf , i64 2 , i64 2 , i64 1 )
122
+
105
123
ret void
106
124
}
0 commit comments