1*9880d681SAndroid Build Coastguard Worker; RUN: opt -jump-threading -disable-output < %s 2*9880d681SAndroid Build Coastguard Worker; PR9112 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; This is actually a test for value tracking. Jump threading produces 5*9880d681SAndroid Build Coastguard Worker; "%phi = phi i16" when it removes all edges leading to %unreachable. 6*9880d681SAndroid Build Coastguard Worker; The .ll parser won't let us write that directly since it's invalid code. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @func() nounwind { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker br label %bb 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerbb: 13*9880d681SAndroid Build Coastguard Worker br label %bb 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerunreachable: 16*9880d681SAndroid Build Coastguard Worker %phi = phi i16 [ %add, %unreachable ], [ 0, %next ] 17*9880d681SAndroid Build Coastguard Worker %add = add i16 0, %phi 18*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i16 %phi, 0 19*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %unreachable, label %next 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workernext: 22*9880d681SAndroid Build Coastguard Worker br label %unreachable 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25