; RUN: opt -reassociate -disable-output < %s


; rdar://7507855
define fastcc i32 @test1() nounwind {
entry:
  %cond = select i1 undef, i32 1, i32 -1          ; <i32> [#uses=2]
  br label %for.cond

for.cond:                                         ; preds = %for.body, %entry
  %sub889 = sub i32 undef, undef                  ; <i32> [#uses=1]
  %sub891 = sub i32 %sub889, %cond                ; <i32> [#uses=0]
  %add896 = sub i32 0, %cond                      ; <i32> [#uses=0]
  ret i32 undef
}

; PR5981
define i32 @test2() nounwind ssp {
entry:
  %0 = load i32, i32* undef, align 4
  %1 = mul nsw i32 undef, %0
  %2 = mul nsw i32 undef, %0
  %3 = add nsw i32 undef, %1
  %4 = add nsw i32 %3, %2
  %5 = add nsw i32 %4, 4
  %6 = shl i32 %0, 3
  %7 = add nsw i32 %5, %6
  br label %bb4.i9

bb4.i9:
  %8 = add nsw i32 undef, %1
  ret i32 0
}


define i32 @test3(i32 %Arg, i32 %x1, i32 %x2, i32 %x3) {
 %A = mul i32 %x1, %Arg
 %B = mul i32 %Arg, %x2 ;; Part of add operation being factored, also used by C
 %C = mul i32 %x3, %B

 %D = add i32 %A, %B
 %E = add i32 %D, %C
  ret i32 %E
}


; rdar://9096268
define void @x66303361ae3f602889d1b7d0f86e5455(i8* %arg) nounwind {
_:
  br label %_33

_33:                                              ; preds = %_33, %_
  %tmp348 = load i8, i8* %arg, align 1
  %tmp349 = lshr i8 %tmp348, 7
  %tmp350 = or i8 %tmp349, 42
  %tmp351 = add i8 %tmp350, -42
  %tmp352 = zext i8 %tmp351 to i32
  %tmp358 = add i32 %tmp352, -501049439
  %tmp359 = mul i32 %tmp358, %tmp358
  %tmp360 = mul i32 %tmp352, %tmp352
  %tmp361 = sub i32 %tmp359, %tmp360
  %tmp362 = mul i32 %tmp361, -920056735
  %tmp363 = add i32 %tmp362, 501049439
  %tmp364 = add i32 %tmp362, -2000262972
  %tmp365 = sub i32 %tmp363, %tmp364
  %tmp366 = sub i32 -501049439, %tmp362
  %tmp367 = add i32 %tmp365, %tmp366
  br label %_33
}

define void @test(i32 %a, i32 %b, i32 %c, i32 %d) {
  %tmp.2 = xor i32 %a, %b		; <i32> [#uses=1]
  %tmp.5 = xor i32 %c, %d		; <i32> [#uses=1]
  %tmp.6 = xor i32 %tmp.2, %tmp.5		; <i32> [#uses=1]
  %tmp.9 = xor i32 %c, %a		; <i32> [#uses=1]
  %tmp.12 = xor i32 %b, %d		; <i32> [#uses=1]
  %tmp.13 = xor i32 %tmp.9, %tmp.12		; <i32> [#uses=1]
  %tmp.16 = xor i32 %tmp.6, %tmp.13		; <i32> [#uses=0]
  ret void
}

define i128 @foo() {
  %mul = mul i128 0, 0
  ret i128 %mul
}

define void @infinite_loop() {
entry:
  br label %loop
loop:
  %x = phi i32 [undef, %entry], [%x, %loop]
  %dead = add i32 %x, 0
  br label %loop
unreachable1:
  %y1 = add i32 %y1, 0
  %z1 = add i32 %y1, 0
  ret void
unreachable2:
  %y2 = add i32 %y2, 0
  %z2 = add i32 %y2, %y2
  ret void
unreachable3:
  %y3 = add i32 %y3, %y3
  %z3 = add i32 %y3, 0
  ret void
unreachable4:
  %y4 = add i32 %y4, %y4
  %z4 = add i32 %y4, %y4
  ret void
}

; PR13185
define void @pr13185(i16 %p) {
entry:
  br label %for.cond

for.cond:                                         ; preds = %for.cond, %entry
  %x.0 = phi i32 [ undef, %entry ], [ %conv, %for.cond ]
  %conv = zext i16 %p to i32
  br label %for.cond
}

; PR12963
@a = external global i8
define i8 @f0(i8 %x) {
  %t0 = load i8, i8* @a
  %t1 = mul i8 %x, %x
  %t2 = mul i8 %t1, %t1
  %t3 = mul i8 %t2, %t2
  %t4 = mul i8 %t3, %x
  %t5 = mul i8 %t4, %t4
  %t6 = mul i8 %t5, %x
  %t7 = mul i8 %t6, %t0
  ret i8 %t7
}

define i32 @sozefx_(i32 %x, i32 %y) {
  %t0 = sub i32 %x, %x
  %t1 = mul i32 %t0, %t0
  %t2 = mul i32 %x, %t0
  %t3 = mul i32 %t1, %t1
  %t4 = add i32 %t2, %t3
  %t5 = mul i32 %x, %y
  %t6 = add i32 %t4, %t5
  ret i32 %t6
}

define i32 @bar(i32 %arg, i32 %arg1, i32 %arg2) {
  %tmp1 = mul i32 %arg1, 2
  %tmp2 = mul i32 %tmp1, 3
  %tmp3 = mul i32 %arg2, 2
  %tmp4 = add i32 %tmp1, 1 ; dead code
  %ret = add i32 %tmp2, %tmp3
  ret i32 %ret
}

; PR14060
define i8 @hang(i8 %p, i8 %p0, i8 %p1, i8 %p2, i8 %p3, i8 %p4, i8 %p5, i8 %p6, i8 %p7, i8 %p8, i8 %p9) {
  %tmp = zext i1 false to i8
  %tmp16 = or i8 %tmp, 1
  %tmp22 = or i8 %p7, %p0
  %tmp23 = or i8 %tmp16, %tmp22
  %tmp28 = or i8 %p9, %p1
  %tmp31 = or i8 %tmp23, %p2
  %tmp32 = or i8 %tmp31, %tmp28
  %tmp38 = or i8 %p8, %p3
  %tmp39 = or i8 %tmp16, %tmp38
  %tmp43 = or i8 %tmp39, %p4
  %tmp44 = or i8 %tmp43, 1
  %tmp47 = or i8 %tmp32, %p5
  %tmp50 = or i8 %tmp47, %p6
  %tmp51 = or i8 %tmp44, %tmp50
  ret i8 %tmp51
}
