blob: 336030c4589b8003a833184826fb1a2559e7bf80 [file] [edit]
; RUN: opt -passes=dfa-jump-threading -S --preserve-ll-uselistorder < %s | FileCheck %s
; Check that threading produces deterministic use lists for %v and %w.
define void @f(i64 %v, i64 %w) {
; CHECK-LABEL: define void @f(
; CHECK: uselistorder i64 %v, { 2, 0, 4, 3, 1, 5 }
; CHECK: uselistorder i64 %w, { 2, 0, 4, 3, 1, 5 }
entry:
br label %header
header:
br i1 false, label %join, label %side
side:
br label %join
join:
%state = phi i32 [ 0, %side ], [ 1, %header ]
br label %p1
p1:
br label %use1
use1:
%phi1 = phi i64 [ %v, %p1 ]
br label %p2
p2:
br label %use2
use2:
%phi2 = phi i64 [ %w, %p2 ]
br label %p3
p3:
br label %use3
use3:
%phi3 = phi i64 [ %v, %p3 ]
br label %p4
p4:
br label %use4
use4:
%phi4 = phi i64 [ %w, %p4 ]
br label %latch
latch:
switch i32 %state, label %exit [
i32 0, label %header
i32 2, label %header
]
exit:
ret void
}