; RUN: opt < %s -reassociate -disable-output ; It has been detected that dead loops like the one in this test case can be ; created by -jump-threading (it was detected by a csmith generated program). ; ; According to -verify this is valid input (even if it could be discussed if ; the dead loop really satisfies SSA form). ; ; The problem found was that the -reassociate pass ends up in an infinite loop ; when analysing the 'deadloop1' basic block. See "Bugzilla - Bug 30818". define void @deadloop1() { br label %endlabel deadloop1: %1 = xor i32 %2, 7 %2 = xor i32 %1, 8 br label %deadloop1 endlabel: ret void } ; Another example showing that dead code could result in infinite loops in ; reassociate pass. See "Bugzilla - Bug 30818". define void @deadloop2() { br label %endlabel deadloop2: %1 = and i32 %2, 7 %2 = and i32 %3, 8 %3 = and i32 %1, 6 br label %deadloop2 endlabel: ret void }