diff --git a/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll b/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll new file mode 100644 index 00000000000..e488ea835bf --- /dev/null +++ b/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll @@ -0,0 +1,29 @@ +; RUN: llvm-as < %s | lli -force-interpreter=false + +%A = global int 0 + +int %main() { + %Ret = call int %test(bool true, int 0) + ret int %Ret +} + +int %test(bool %c, int %A) { + br bool %c, label %Taken1, label %NotTaken + +Cont: + %V = phi int [0, %NotTaken], + [ sub (int cast (int* %A to int), int 1234), %Taken1] + ret int 0 + +NotTaken: + br label %Cont + +Taken1: + %B = seteq int %A, 0 + ; Code got inserted here, breaking the condition code. + br bool %B, label %Cont, label %ExitError + +ExitError: + ret int 12 + +}