Reapply r188119 now that the bug it exposed is fixed.
[oota-llvm.git] / test / Instrumentation / DataFlowSanitizer / store.ll
1 ; RUN: opt < %s -dfsan -S | FileCheck %s
2 target 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
4 define 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
18 define 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
34 define 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
54 define 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 }