[ARM] Better OR's for MVE compares
[llvm-core.git] / test / Transforms / LICM / alias-set-tracker-loss.ll
blob378d908f69870f6234a395bbb619ca0cfd067eba
1 ; RUN: opt -S -licm -loop-unroll < %s
3 ; This test contains a carefully rotated set of three nested loops. The middle
4 ; loop can be unrolled leaving one copy of the inner loop inside the outer
5 ; loop. Because of how LICM works, when this middle loop is unrolled and
6 ; removed, its alias set tracker is destroyed and no longer available when LICM
7 ; runs on the outer loop.
9 define void @f() {
10 entry:
11   br label %l1
13 l2.l1.loopexit_crit_edge:
14   br label %l1.loopexit
16 l1.loopexit:
17   br label %l1.backedge
19 l1:
20   br i1 undef, label %l1.backedge, label %l2.preheader
22 l1.backedge:
23   br label %l1
25 l2.preheader:
26   br i1 true, label %l1.loopexit, label %l3.preheader.lr.ph
28 l3.preheader.lr.ph:
29   br label %l3.preheader
31 l2.loopexit:
32   br i1 true, label %l2.l1.loopexit_crit_edge, label %l3.preheader
34 l3.preheader:
35   br label %l3
37 l3:
38   br i1 true, label %l3, label %l2.loopexit