OLD | NEW |
(Empty) | |
| 1 ; RUN: opt < %s -rewrite-pnacl-library-calls -S | FileCheck %s |
| 2 ; RUN: opt < %s -rewrite-pnacl-library-calls -S | FileCheck %s -check-prefix=CLE
ANED |
| 3 |
| 4 declare i8* @memcpy(i8*, i8*, i32) |
| 5 declare i8* @memmove(i8*, i8*, i32) |
| 6 declare i8* @memset(i8*, i32, i32) |
| 7 |
| 8 ; No declaration or definition of the library functions should remain, since |
| 9 ; the only uses of mem* functions are calls. |
| 10 ; CLEANED-NOT: @memcpy |
| 11 ; CLEANED-NOT: @memmove |
| 12 ; CLEANED-NOT: @memset |
| 13 |
| 14 define i8* @call_memcpy(i8* %dest, i8* %src, i32 %len) { |
| 15 %result = call i8* @memcpy(i8* %dest, i8* %src, i32 %len) |
| 16 ret i8* %result |
| 17 ; CHECK: call void @llvm.memcpy.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 %len, i32
1, i1 false) |
| 18 ; CHECK: ret i8* %dest |
| 19 } |
| 20 |
| 21 define i8* @call_memmove(i8* %dest, i8* %src, i32 %len) { |
| 22 %result = call i8* @memmove(i8* %dest, i8* %src, i32 %len) |
| 23 ret i8* %result |
| 24 ; CHECK: call void @llvm.memmove.p0i8.p0i8.i32(i8* %dest, i8* %src, i32 %len, i3
2 1, i1 false) |
| 25 ; CHECK: ret i8* %dest |
| 26 } |
| 27 |
| 28 define i8* @call_memset(i8* %dest, i32 %c, i32 %len) { |
| 29 %result = call i8* @memset(i8* %dest, i32 %c, i32 %len) |
| 30 ret i8* %result |
| 31 ; CHECK: %trunc_byte = trunc i32 %c to i8 |
| 32 ; CHECK: call void @llvm.memset.p0i8.i32(i8* %dest, i8 %trunc_byte, i32 %len, i3
2 1, i1 false) |
| 33 ; CHECK: ret i8* %dest |
| 34 } |
OLD | NEW |