1*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs < %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; The lowering of a switch combined with constand folding would leave spurious extra arguments on a PHI instruction. 4*9880d681SAndroid Build Coastguard Worker; 5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-darwin10" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine void @foo() { 8*9880d681SAndroid Build Coastguard Worker br label %cond_true813.i 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workercond_true813.i: ; preds = %0 11*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true818.i, label %cond_next1146.i 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workercond_true818.i: ; preds = %cond_true813.i 14*9880d681SAndroid Build Coastguard Worker br i1 false, label %recog_memoized.exit52, label %cond_next1146.i 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerrecog_memoized.exit52: ; preds = %cond_true818.i 17*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb886.i.preheader [ 18*9880d681SAndroid Build Coastguard Worker i32 0, label %bb907.i 19*9880d681SAndroid Build Coastguard Worker i32 44, label %bb866.i 20*9880d681SAndroid Build Coastguard Worker i32 103, label %bb874.i 21*9880d681SAndroid Build Coastguard Worker i32 114, label %bb874.i 22*9880d681SAndroid Build Coastguard Worker ] 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerbb857.i: ; preds = %bb886.i, %bb866.i 25*9880d681SAndroid Build Coastguard Worker %tmp862.i494.24 = phi i8* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ] ; <i8*> [#uses=1] 26*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb886.i.preheader [ 27*9880d681SAndroid Build Coastguard Worker i32 0, label %bb907.i 28*9880d681SAndroid Build Coastguard Worker i32 44, label %bb866.i 29*9880d681SAndroid Build Coastguard Worker i32 103, label %bb874.i 30*9880d681SAndroid Build Coastguard Worker i32 114, label %bb874.i 31*9880d681SAndroid Build Coastguard Worker ] 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerbb866.i.loopexit: ; preds = %bb874.i 34*9880d681SAndroid Build Coastguard Worker br label %bb866.i 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerbb866.i.loopexit31: ; preds = %cond_true903.i 37*9880d681SAndroid Build Coastguard Worker br label %bb866.i 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerbb866.i: ; preds = %bb866.i.loopexit31, %bb866.i.loopexit, %bb857.i, %recog_memoized.exit52 40*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb907.i, label %bb857.i 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerbb874.i.preheader.loopexit: ; preds = %cond_true903.i, %cond_true903.i 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Workerbb874.i: ; preds = %bb857.i, %bb857.i, %recog_memoized.exit52, %recog_memoized.exit52 46*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb886.i.preheader.loopexit [ 47*9880d681SAndroid Build Coastguard Worker i32 0, label %bb907.i 48*9880d681SAndroid Build Coastguard Worker i32 44, label %bb866.i.loopexit 49*9880d681SAndroid Build Coastguard Worker i32 103, label %bb874.i.backedge 50*9880d681SAndroid Build Coastguard Worker i32 114, label %bb874.i.backedge 51*9880d681SAndroid Build Coastguard Worker ] 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerbb874.i.backedge: ; preds = %bb874.i, %bb874.i 54*9880d681SAndroid Build Coastguard Worker ret void 55*9880d681SAndroid Build Coastguard Worker 56*9880d681SAndroid Build Coastguard Workerbb886.i.preheader.loopexit: ; preds = %bb874.i 57*9880d681SAndroid Build Coastguard Worker ret void 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerbb886.i.preheader: ; preds = %bb857.i, %recog_memoized.exit52 60*9880d681SAndroid Build Coastguard Worker %tmp862.i494.26 = phi i8* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ] ; <i8*> [#uses=1] 61*9880d681SAndroid Build Coastguard Worker br label %bb886.i 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerbb886.i: ; preds = %cond_true903.i, %bb886.i.preheader 64*9880d681SAndroid Build Coastguard Worker br i1 false, label %bb857.i, label %cond_true903.i 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workercond_true903.i: ; preds = %bb886.i 67*9880d681SAndroid Build Coastguard Worker switch i32 0, label %bb886.i [ 68*9880d681SAndroid Build Coastguard Worker i32 0, label %bb907.i 69*9880d681SAndroid Build Coastguard Worker i32 44, label %bb866.i.loopexit31 70*9880d681SAndroid Build Coastguard Worker i32 103, label %bb874.i.preheader.loopexit 71*9880d681SAndroid Build Coastguard Worker i32 114, label %bb874.i.preheader.loopexit 72*9880d681SAndroid Build Coastguard Worker ] 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Workerbb907.i: ; preds = %cond_true903.i, %bb874.i, %bb866.i, %bb857.i, %recog_memoized.exit52 75*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_next1146.i, label %cond_true910.i 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workercond_true910.i: ; preds = %bb907.i 78*9880d681SAndroid Build Coastguard Worker ret void 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workercond_next1146.i: ; preds = %bb907.i, %cond_true818.i, %cond_true813.i 81*9880d681SAndroid Build Coastguard Worker ret void 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerbb2060.i: ; No predecessors! 84*9880d681SAndroid Build Coastguard Worker br i1 false, label %cond_true2064.i, label %bb2067.i 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workercond_true2064.i: ; preds = %bb2060.i 87*9880d681SAndroid Build Coastguard Worker unreachable 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerbb2067.i: ; preds = %bb2060.i 90*9880d681SAndroid Build Coastguard Worker ret void 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workercond_next3473: ; No predecessors! 93*9880d681SAndroid Build Coastguard Worker ret void 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Workercond_next3521: ; No predecessors! 96*9880d681SAndroid Build Coastguard Worker ret void 97*9880d681SAndroid Build Coastguard Worker} 98