[WebAssembly] Don't perform the returned-argument optimization on constants.
[oota-llvm.git] / test / CodeGen / Generic / 2006-09-06-SwitchLowering.ll
1 ; RUN: llc < %s
2
3 define void @foo() {
4         br label %cond_true813.i
5
6 cond_true813.i:         ; preds = %0
7         br i1 false, label %cond_true818.i, label %cond_next1146.i
8
9 cond_true818.i:         ; preds = %cond_true813.i
10         br i1 false, label %recog_memoized.exit52, label %cond_next1146.i
11
12 recog_memoized.exit52:          ; preds = %cond_true818.i
13         switch i32 0, label %bb886.i.preheader [
14                  i32 0, label %bb907.i
15                  i32 44, label %bb866.i
16                  i32 103, label %bb874.i
17                  i32 114, label %bb874.i
18         ]
19
20 bb857.i:                ; preds = %bb886.i, %bb866.i
21         %tmp862.i494.24 = phi i8* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ]             ; <i8*> [#uses=4]
22         switch i32 0, label %bb886.i.preheader [
23                  i32 0, label %bb907.i
24                  i32 44, label %bb866.i
25                  i32 103, label %bb874.i
26                  i32 114, label %bb874.i
27         ]
28
29 bb866.i.loopexit:               ; preds = %bb874.i
30         br label %bb866.i
31
32 bb866.i.loopexit31:             ; preds = %cond_true903.i
33         br label %bb866.i
34
35 bb866.i:                ; preds = %bb866.i.loopexit31, %bb866.i.loopexit, %bb857.i, %recog_memoized.exit52
36         br i1 false, label %bb907.i, label %bb857.i
37
38 bb874.i.preheader.loopexit:             ; preds = %cond_true903.i, %cond_true903.i
39         ret void
40
41 bb874.i:                ; preds = %bb857.i, %bb857.i, %recog_memoized.exit52, %recog_memoized.exit52
42         %tmp862.i494.25 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ %tmp862.i494.24, %bb857.i ], [ undef, %recog_memoized.exit52 ], [ undef, %recog_memoized.exit52 ]            ; <i8*> [#uses=1]
43         switch i32 0, label %bb886.i.preheader.loopexit [
44                  i32 0, label %bb907.i
45                  i32 44, label %bb866.i.loopexit
46                  i32 103, label %bb874.i.backedge
47                  i32 114, label %bb874.i.backedge
48         ]
49
50 bb874.i.backedge:               ; preds = %bb874.i, %bb874.i
51         ret void
52
53 bb886.i.preheader.loopexit:             ; preds = %bb874.i
54         ret void
55
56 bb886.i.preheader:              ; preds = %bb857.i, %recog_memoized.exit52
57         %tmp862.i494.26 = phi i8* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ]              ; <i8*> [#uses=1]
58         br label %bb886.i
59
60 bb886.i:                ; preds = %cond_true903.i, %bb886.i.preheader
61         br i1 false, label %bb857.i, label %cond_true903.i
62
63 cond_true903.i:         ; preds = %bb886.i
64         switch i32 0, label %bb886.i [
65                  i32 0, label %bb907.i
66                  i32 44, label %bb866.i.loopexit31
67                  i32 103, label %bb874.i.preheader.loopexit
68                  i32 114, label %bb874.i.preheader.loopexit
69         ]
70
71 bb907.i:                ; preds = %cond_true903.i, %bb874.i, %bb866.i, %bb857.i, %recog_memoized.exit52
72         %tmp862.i494.0 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ null, %bb866.i ], [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.25, %bb874.i ], [ null, %cond_true903.i ]         ; <i8*> [#uses=1]
73         br i1 false, label %cond_next1146.i, label %cond_true910.i
74
75 cond_true910.i:         ; preds = %bb907.i
76         ret void
77
78 cond_next1146.i:                ; preds = %bb907.i, %cond_true818.i, %cond_true813.i
79         %tmp862.i494.1 = phi i8* [ %tmp862.i494.0, %bb907.i ], [ undef, %cond_true818.i ], [ undef, %cond_true813.i ]           ; <i8*> [#uses=0]
80         ret void
81
82 bb2060.i:               ; No predecessors!
83         br i1 false, label %cond_true2064.i, label %bb2067.i
84
85 cond_true2064.i:                ; preds = %bb2060.i
86         unreachable
87
88 bb2067.i:               ; preds = %bb2060.i
89         ret void
90
91 cond_next3473:          ; No predecessors!
92         ret void
93
94 cond_next3521:          ; No predecessors!
95         ret void
96 }