1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -licm -loop-unroll < %s 2*9880d681SAndroid Build Coastguard Worker; 3*9880d681SAndroid Build Coastguard Worker; This test contains a carefully rotated set of three nested loops. The middle 4*9880d681SAndroid Build Coastguard Worker; loop can be unrolled leaving one copy of the inner loop inside the outer 5*9880d681SAndroid Build Coastguard Worker; loop. Because of how LICM works, when this middle loop is unrolled and 6*9880d681SAndroid Build Coastguard Worker; removed, its alias set tracker is destroyed and no longer available when LICM 7*9880d681SAndroid Build Coastguard Worker; runs on the outer loop. 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @f() { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker br label %l1 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerl2.l1.loopexit_crit_edge: 14*9880d681SAndroid Build Coastguard Worker br label %l1.loopexit 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerl1.loopexit: 17*9880d681SAndroid Build Coastguard Worker br label %l1.backedge 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerl1: 20*9880d681SAndroid Build Coastguard Worker br i1 undef, label %l1.backedge, label %l2.preheader 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerl1.backedge: 23*9880d681SAndroid Build Coastguard Worker br label %l1 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerl2.preheader: 26*9880d681SAndroid Build Coastguard Worker br i1 true, label %l1.loopexit, label %l3.preheader.lr.ph 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerl3.preheader.lr.ph: 29*9880d681SAndroid Build Coastguard Worker br label %l3.preheader 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerl2.loopexit: 32*9880d681SAndroid Build Coastguard Worker br i1 true, label %l2.l1.loopexit_crit_edge, label %l3.preheader 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerl3.preheader: 35*9880d681SAndroid Build Coastguard Worker br label %l3 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerl3: 38*9880d681SAndroid Build Coastguard Worker br i1 true, label %l3, label %l2.loopexit 39*9880d681SAndroid Build Coastguard Worker} 40