|  | ; Bugpoint-reduced example that demonstrated a bug (assertion failure) | 
|  | ; in register allocation.  See | 
|  | ; https://code.google.com/p/nativeclient/issues/detail?id=3903 . | 
|  | ; | 
|  | ; TODO(kschimpf) Find out why lc2i is needed. | 
|  | ; RUN: %lc2i -i %s --args -O2 --verbose regalloc | 
|  |  | 
|  | define void @foo() { | 
|  | bb: | 
|  | br i1 undef, label %bb13, label %bb14 | 
|  |  | 
|  | bb13: | 
|  | unreachable | 
|  |  | 
|  | bb14: | 
|  | br i1 undef, label %bb50, label %bb16 | 
|  |  | 
|  | bb15:                                             ; preds = %bb42, %bb35 | 
|  | br i1 undef, label %bb50, label %bb16 | 
|  |  | 
|  | bb16:                                             ; preds = %bb49, %bb15, %bb14 | 
|  | %tmp = phi i32 [ undef, %bb14 ], [ %tmp18, %bb49 ], [ undef, %bb15 ] | 
|  | br label %bb17 | 
|  |  | 
|  | bb17:                                             ; preds = %bb48, %bb16 | 
|  | %tmp18 = phi i32 [ undef, %bb16 ], [ undef, %bb48 ] | 
|  | %tmp19 = add i32 %tmp18, 4 | 
|  | br i1 undef, label %bb21, label %bb46 | 
|  |  | 
|  | bb21:                                             ; preds = %bb27, %bb17 | 
|  | %tmp22 = phi i32 [ undef, %bb17 ], [ %tmp30, %bb27 ] | 
|  | %tmp23 = add i32 undef, -1 | 
|  | %tmp24 = add i32 undef, undef | 
|  | %undef.ptr = inttoptr i32 undef to i32* | 
|  | %tmp25 = load i32, i32* %undef.ptr, align 1 | 
|  | %tmp26 = icmp eq i32 undef, %tmp22 | 
|  | br i1 %tmp26, label %bb34, label %bb32 | 
|  |  | 
|  | bb27:                                             ; preds = %bb42, %bb34 | 
|  | %tmp28 = icmp sgt i32 %tmp23, 0 | 
|  | %tmp29 = inttoptr i32 %tmp19 to i32* | 
|  | %tmp30 = load i32, i32* %tmp29, align 1 | 
|  | br i1 %tmp28, label %bb21, label %bb46 | 
|  |  | 
|  | bb32:                                             ; preds = %bb21 | 
|  | %tmp33 = inttoptr i32 %tmp24 to i32* | 
|  | store i32 0, i32* %tmp33, align 1 | 
|  | br label %bb34 | 
|  |  | 
|  | bb34:                                             ; preds = %bb32, %bb31 | 
|  | br i1 undef, label %bb27, label %bb35 | 
|  |  | 
|  | bb35:                                             ; preds = %bb34 | 
|  | %tmp40 = inttoptr i32 %tmp25 to void (i32)* | 
|  | call void %tmp40(i32 undef) | 
|  | br i1 undef, label %bb42, label %bb15 | 
|  |  | 
|  | bb42:                                             ; preds = %bb35 | 
|  | %tmp43 = inttoptr i32 %tmp to i32* | 
|  | %tmp44 = load i32, i32* %tmp43, align 1 | 
|  | %tmp45 = icmp eq i32 %tmp44, %tmp18 | 
|  | br i1 %tmp45, label %bb27, label %bb15 | 
|  |  | 
|  | bb46:                                             ; preds = %bb27, %bb17 | 
|  | br i1 undef, label %bb47, label %bb49 | 
|  |  | 
|  | bb47:                                             ; preds = %bb46 | 
|  | br i1 undef, label %bb50, label %bb48 | 
|  |  | 
|  | bb48:                                             ; preds = %bb47 | 
|  | br i1 undef, label %bb50, label %bb17 | 
|  |  | 
|  | bb49:                                             ; preds = %bb46 | 
|  | br i1 undef, label %bb50, label %bb16 | 
|  |  | 
|  | bb50:                                             ; preds = %bb49, %bb48, %bb47, %bb15, %bb14 | 
|  | unreachable | 
|  | } |