blob: 0c0aa496813ec9d14ffc5c833491ef3d648f7466 [file] [log] [blame]
Peter Collingbournee5d5b0c2013-08-07 22:47:18 +00001; RUN: opt < %s -dfsan -S | FileCheck %s
2target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
3
4define void @store8(i8 %v, i8* %p) {
5 ; CHECK: @store8
6 ; CHECK: load{{.*}}__dfsan_arg_tls
7 ; CHECK: ptrtoint
8 ; CHECK: and
9 ; CHECK: mul
10 ; CHECK: inttoptr
11 ; CHECK: getelementptr
12 ; CHECK: store
13 ; CHECK: store
14 store i8 %v, i8* %p
15 ret void
16}
17
18define void @store16(i16 %v, i16* %p) {
19 ; CHECK: @store16
20 ; CHECK: load{{.*}}__dfsan_arg_tls
21 ; CHECK: ptrtoint
22 ; CHECK: and
23 ; CHECK: mul
24 ; CHECK: inttoptr
25 ; CHECK: getelementptr
26 ; CHECK: store
27 ; CHECK: getelementptr
28 ; CHECK: store
29 ; CHECK: store
30 store i16 %v, i16* %p
31 ret void
32}
33
34define void @store32(i32 %v, i32* %p) {
35 ; CHECK: @store32
36 ; CHECK: load{{.*}}__dfsan_arg_tls
37 ; CHECK: ptrtoint
38 ; CHECK: and
39 ; CHECK: mul
40 ; CHECK: inttoptr
41 ; CHECK: getelementptr
42 ; CHECK: store
43 ; CHECK: getelementptr
44 ; CHECK: store
45 ; CHECK: getelementptr
46 ; CHECK: store
47 ; CHECK: getelementptr
48 ; CHECK: store
49 ; CHECK: store
50 store i32 %v, i32* %p
51 ret void
52}
53
54define void @store64(i64 %v, i64* %p) {
55 ; CHECK: @store64
56 ; CHECK: load{{.*}}__dfsan_arg_tls
57 ; CHECK: ptrtoint
58 ; CHECK: and
59 ; CHECK: mul
60 ; CHECK: inttoptr
61 ; CHECK: insertelement
62 ; CHECK: insertelement
63 ; CHECK: insertelement
64 ; CHECK: insertelement
65 ; CHECK: insertelement
66 ; CHECK: insertelement
67 ; CHECK: insertelement
68 ; CHECK: insertelement
69 ; CHECK: bitcast
70 ; CHECK: getelementptr
71 ; CHECK: store
72 ; CHECK: store
73 store i64 %v, i64* %p
74 ret void
75}