[WebAssembly] Don't perform the returned-argument optimization on constants.
[oota-llvm.git] / test / CodeGen / Generic / 2006-06-13-ComputeMaskedBitsCrash.ll
1 ; RUN: llc < %s -O0
2         
3 %struct.cl_perfunc_opts = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32 }
4 @cl_pf_opts = external global %struct.cl_perfunc_opts           ; <%struct.cl_perfunc_opts*> [#uses=2]
5
6 define void @set_flags_from_O() {
7 entry:
8         %tmp22 = icmp sgt i32 0, 0              ; <i1> [#uses=1]
9         br i1 %tmp22, label %cond_true23, label %cond_next159
10
11 cond_true23:            ; preds = %entry
12         %tmp138 = getelementptr %struct.cl_perfunc_opts, %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8             ; <i8*> [#uses=1]
13         %tmp138.upgrd.1 = bitcast i8* %tmp138 to i32*           ; <i32*> [#uses=2]
14         %tmp139 = load i32, i32* %tmp138.upgrd.1                ; <i32> [#uses=1]
15         %tmp140 = shl i32 1, 27         ; <i32> [#uses=1]
16         %tmp141 = and i32 %tmp140, 134217728            ; <i32> [#uses=1]
17         %tmp142 = and i32 %tmp139, -134217729           ; <i32> [#uses=1]
18         %tmp143 = or i32 %tmp142, %tmp141               ; <i32> [#uses=1]
19         store i32 %tmp143, i32* %tmp138.upgrd.1
20         %tmp144 = getelementptr %struct.cl_perfunc_opts, %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8             ; <i8*> [#uses=1]
21         %tmp144.upgrd.2 = bitcast i8* %tmp144 to i32*           ; <i32*> [#uses=1]
22         %tmp145 = load i32, i32* %tmp144.upgrd.2                ; <i32> [#uses=1]
23         %tmp146 = shl i32 %tmp145, 22           ; <i32> [#uses=1]
24         %tmp147 = lshr i32 %tmp146, 31          ; <i32> [#uses=1]
25         %tmp147.upgrd.3 = trunc i32 %tmp147 to i8               ; <i8> [#uses=1]
26         %tmp148 = icmp eq i8 %tmp147.upgrd.3, 0         ; <i1> [#uses=1]
27         br i1 %tmp148, label %cond_true149, label %cond_next159
28
29 cond_true149:           ; preds = %cond_true23
30         %tmp150 = bitcast i8* null to i32*              ; <i32*> [#uses=0]
31         ret void
32
33 cond_next159:           ; preds = %cond_true23, %entry
34         ret void
35 }