| Mon P Wang | cc2ab0c | 2010-04-04 03:10:52 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple i386-pc-linux-gnu -emit-llvm < %s| FileCheck %s | 
| Daniel Dunbar | 327acd7 | 2008-07-22 00:26:45 +0000 | [diff] [blame] | 2 |  | 
| Chris Lattner | 30107ed | 2011-04-17 00:40:24 +0000 | [diff] [blame] | 3 | // CHECK: @test1 | 
| Mon P Wang | cc2ab0c | 2010-04-04 03:10:52 +0000 | [diff] [blame] | 4 | // CHECK: call void @llvm.memset.p0i8.i32 | 
|  | 5 | // CHECK: call void @llvm.memset.p0i8.i32 | 
|  | 6 | // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32 | 
|  | 7 | // CHECK: call void @llvm.memmove.p0i8.p0i8.i32 | 
|  | 8 | // CHECK-NOT: __builtin | 
|  | 9 | // CHECK: ret | 
| Chris Lattner | 30107ed | 2011-04-17 00:40:24 +0000 | [diff] [blame] | 10 | int test1(int argc, char **argv) { | 
| Daniel Dunbar | 327acd7 | 2008-07-22 00:26:45 +0000 | [diff] [blame] | 11 | unsigned char a = 0x11223344; | 
|  | 12 | unsigned char b = 0x11223344; | 
|  | 13 | __builtin_bzero(&a, sizeof(a)); | 
|  | 14 | __builtin_memset(&a, 0, sizeof(a)); | 
|  | 15 | __builtin_memcpy(&a, &b, sizeof(a)); | 
|  | 16 | __builtin_memmove(&a, &b, sizeof(a)); | 
|  | 17 | return 0; | 
|  | 18 | } | 
| Chris Lattner | 30107ed | 2011-04-17 00:40:24 +0000 | [diff] [blame] | 19 |  | 
|  | 20 | // rdar://9289468 | 
|  | 21 |  | 
|  | 22 | // CHECK: @test2 | 
|  | 23 | // CHECK: call void @llvm.memcpy.p0i8.p0i8.i32 | 
|  | 24 | char* test2(char* a, char* b) { | 
|  | 25 | return __builtin_memcpy(a, b, 4); | 
|  | 26 | } | 
|  | 27 |  | 
|  | 28 | // CHECK: @test3 | 
|  | 29 | // CHECK: call void @llvm.memset | 
|  | 30 | void test3(char *P) { | 
|  | 31 | __builtin___memset_chk(P, 42, 128, 128); | 
|  | 32 | } | 
|  | 33 |  | 
|  | 34 | // CHECK: @test4 | 
|  | 35 | // CHECK: call void @llvm.memcpy | 
|  | 36 | void test4(char *P, char *Q) { | 
|  | 37 | __builtin___memcpy_chk(P, Q, 128, 128); | 
|  | 38 | } | 
|  | 39 |  | 
|  | 40 | // CHECK: @test5 | 
|  | 41 | // CHECK: call void @llvm.memmove | 
|  | 42 | void test5(char *P, char *Q) { | 
|  | 43 | __builtin___memmove_chk(P, Q, 128, 128); | 
|  | 44 | } | 
| Chris Lattner | 54fd1a1 | 2011-04-20 23:14:50 +0000 | [diff] [blame] | 45 |  | 
|  | 46 | // CHECK: @test6 | 
|  | 47 | // CHECK: call void @llvm.memcpy | 
|  | 48 | int test6(char *X) { | 
|  | 49 | return __builtin___memcpy_chk(X, X, 42, 42) != 0; | 
|  | 50 | } |