1 ; RUN: llc -march=hexagon < %s
4 ; Test that the compiler doesn't assert because the live interval information
5 ; isn't updated correctly during the Hexagon Expand Condsets pass. The pass
6 ; wasn't updating the information when converting a mux with the same operands
7 ; into a copy. When this occurs, the pass needs to update the liveness
8 ; information for the predicate register, which is removed.
10 define void @f0(i32 %a0) unnamed_addr {
12 %v0 = or i32 undef, %a0
13 %v1 = or i32 undef, %v0
16 b1: ; preds = %b3, %b0
17 %v2 = phi i32 [ %v9, %b3 ], [ 0, %b0 ]
18 %v3 = phi i32 [ 0, %b3 ], [ %v1, %b0 ]
20 %v5 = icmp eq i32 %v4, 0
21 %v6 = select i1 %v5, i32 %v1, i32 %v3
24 br i1 undef, label %b2, label %b3
27 store i32 %v8, ptr undef, align 4
30 b3: ; preds = %b2, %b1
31 %v9 = add nuw nsw i32 %v2, 1
32 %v10 = icmp slt i32 %v9, undef
33 br i1 %v10, label %b1, label %b4