diff --git a/test/Regression/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll b/test/Regression/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll new file mode 100644 index 00000000000..25a4d56d312 --- /dev/null +++ b/test/Regression/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll @@ -0,0 +1,24 @@ +; This test checks to make sure that 'br X, Dest, Dest' is folded into +; 'br Dest'. This can only happen after the 'Z' block is eliminated. This is +; due to the fact that the SimplifyCFG function does not use +; the ConstantFoldTerminator function. + +; RUN: as < %s | opt -simplifycfg | dis | not grep 'br bool %c2' + +declare void %noop() + +int %test(bool %c1, bool %c2) { + call void %noop() + br bool %c1, label %A, label %Y +A: + call void %noop() + br bool %c2, label %Z, label %X ; Can be converted to unconditional br +Z: + br label %X +X: + call void %noop() + ret int 0 +Y: + call void %noop() + br label %X +}