[DAGCombiner] Add target hook function to decide folding (mul (add x, c1), c2)
[llvm-project.git] / llvm / test / Transforms / Reassociate / deadcode.ll
blob866cf64d2a1f965666d8bf569ea2725f589c4874
1 ; RUN: opt < %s -reassociate -disable-output
3 ; It has been detected that dead loops like the one in this test case can be
4 ; created by -jump-threading (it was detected by a csmith generated program).
6 ; According to -verify this is valid input (even if it could be discussed if
7 ; the dead loop really satisfies SSA form).
9 ; The problem found was that the -reassociate pass ends up in an infinite loop
10 ; when analysing the 'deadloop1' basic block. See "Bugzilla - Bug 30818".
11 define void @deadloop1() {
12   br label %endlabel
14 deadloop1:
15   %1 = xor i32 %2, 7
16   %2 = xor i32 %1, 8
17   br label %deadloop1
19 endlabel:
20   ret void
24 ; Another example showing that dead code could result in infinite loops in
25 ; reassociate pass. See "Bugzilla - Bug 30818".
26 define void @deadloop2() {
27   br label %endlabel
29 deadloop2:
30   %1 = and i32 %2, 7
31   %2 = and i32 %3, 8
32   %3 = and i32 %1, 6
33   br label %deadloop2
35 endlabel:
36   ret void