1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
  
     | 
    
      ; RUN: llc < %s -mtriple=x86_64-unknown-freebsd7.2
; PR4478
	%struct.sockaddr = type <{ i8, i8, [14 x i8] }>
define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
	br label %while.cond
while.cond:		; preds = %sw.bb6, %entry
	switch i32 undef, label %sw.default [
		i32 -1, label %while.end
		i32 119, label %sw.bb6
	]
sw.bb6:		; preds = %while.cond
	br i1 undef, label %if.then, label %while.cond
if.then:		; preds = %sw.bb6
	ret i32 1
sw.default:		; preds = %while.cond
	ret i32 1
while.end:		; preds = %while.cond
	br i1 undef, label %if.then15, label %if.end16
if.then15:		; preds = %while.end
	ret i32 1
if.end16:		; preds = %while.end
	br i1 undef, label %lor.lhs.false, label %if.then21
lor.lhs.false:		; preds = %if.end16
	br i1 undef, label %if.end22, label %if.then21
if.then21:		; preds = %lor.lhs.false, %if.end16
	ret i32 1
if.end22:		; preds = %lor.lhs.false
	br i1 undef, label %lor.lhs.false27, label %if.then51
lor.lhs.false27:		; preds = %if.end22
	br i1 undef, label %lor.lhs.false39, label %if.then51
lor.lhs.false39:		; preds = %lor.lhs.false27
	br i1 undef, label %if.end52, label %if.then51
if.then51:		; preds = %lor.lhs.false39, %lor.lhs.false27, %if.end22
	ret i32 1
if.end52:		; preds = %lor.lhs.false39
	br i1 undef, label %if.then57, label %if.end58
if.then57:		; preds = %if.end52
	ret i32 1
if.end58:		; preds = %if.end52
	br i1 undef, label %if.then64, label %if.end65
if.then64:		; preds = %if.end58
	ret i32 1
if.end65:		; preds = %if.end58
	br i1 undef, label %if.then71, label %if.end72
if.then71:		; preds = %if.end65
	ret i32 1
if.end72:		; preds = %if.end65
	br i1 undef, label %if.then83, label %if.end84
if.then83:		; preds = %if.end72
	ret i32 1
if.end84:		; preds = %if.end72
	br i1 undef, label %if.then101, label %if.end102
if.then101:		; preds = %if.end84
	ret i32 1
if.end102:		; preds = %if.end84
	br i1 undef, label %if.then113, label %if.end114
if.then113:		; preds = %if.end102
	ret i32 1
if.end114:		; preds = %if.end102
	br i1 undef, label %if.then209, label %if.end210
if.then209:		; preds = %if.end114
	ret i32 1
if.end210:		; preds = %if.end114
	br i1 undef, label %if.then219, label %if.end220
if.then219:		; preds = %if.end210
	ret i32 1
if.end220:		; preds = %if.end210
	br i1 undef, label %if.end243, label %lor.lhs.false230
lor.lhs.false230:		; preds = %if.end220
	unreachable
if.end243:		; preds = %if.end220
	br i1 undef, label %if.then249, label %if.end250
if.then249:		; preds = %if.end243
	ret i32 1
if.end250:		; preds = %if.end243
	br i1 undef, label %if.end261, label %if.then260
if.then260:		; preds = %if.end250
	ret i32 1
if.end261:		; preds = %if.end250
	br i1 undef, label %if.then270, label %if.end271
if.then270:		; preds = %if.end261
	ret i32 1
if.end271:		; preds = %if.end261
	%call.i = call i32 @arc4random() nounwind		; <i32> [#uses=1]
	%rem.i = urem i32 %call.i, 16383		; <i32> [#uses=1]
	%rem1.i = trunc i32 %rem.i to i16		; <i16> [#uses=1]
	%conv2.i = or i16 %rem1.i, -16384		; <i16> [#uses=1]
	%0 = call i16 asm "xchgb ${0:h}, ${0:b}", "=Q,0,~{dirflag},~{fpsr},~{flags}"(i16 %conv2.i) nounwind		; <i16> [#uses=1]
	store i16 %0, i16* undef
	%call281 = call i32 @bind(i32 undef, %struct.sockaddr* undef, i32 16) nounwind		; <i32> [#uses=0]
	unreachable
}
declare i32 @bind(i32, %struct.sockaddr*, i32)
declare i32 @arc4random()
 
     |