summaryrefslogtreecommitdiff
path: root/tools/llvm-c-test/echo.cpp
diff options
context:
space:
mode:
authorAmaury Sechet <deadalnix@gmail.com>2016-02-09 23:15:02 +0000
committerAmaury Sechet <deadalnix@gmail.com>2016-02-09 23:15:02 +0000
commitef35fd8a094376a682fbccfa28c095c9bf6a9fbd (patch)
tree920502b18c4810894affb7d444f6a8a7d8429a2c /tools/llvm-c-test/echo.cpp
parentc4f6eb8e3bdd909a4b431f0b3b22addc471a03e7 (diff)
Add icmp and conditional branches in the C API echo test.
Summary: Improving coverage. Depends on D16912 . Reviewers: bogner, chandlerc, echristo, dblaikie, joker.eph, Wallbraker Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D16937 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260321 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-c-test/echo.cpp')
-rw-r--r--tools/llvm-c-test/echo.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/tools/llvm-c-test/echo.cpp b/tools/llvm-c-test/echo.cpp
index 97883863ed6..3e25d0e7702 100644
--- a/tools/llvm-c-test/echo.cpp
+++ b/tools/llvm-c-test/echo.cpp
@@ -216,8 +216,19 @@ struct FunCloner {
break;
}
case LLVMBr: {
- LLVMBasicBlockRef SrcBB = LLVMValueAsBasicBlock(LLVMGetOperand(Src, 0));
- Dst = LLVMBuildBr(Builder, DeclareBB(SrcBB));
+ if (!LLVMIsConditional(Src)) {
+ LLVMValueRef SrcOp = LLVMGetOperand(Src, 0);
+ LLVMBasicBlockRef SrcBB = LLVMValueAsBasicBlock(SrcOp);
+ Dst = LLVMBuildBr(Builder, DeclareBB(SrcBB));
+ break;
+ }
+
+ LLVMValueRef Cond = LLVMGetCondition(Src);
+ LLVMValueRef Else = LLVMGetOperand(Src, 1);
+ LLVMBasicBlockRef ElseBB = DeclareBB(LLVMValueAsBasicBlock(Else));
+ LLVMValueRef Then = LLVMGetOperand(Src, 2);
+ LLVMBasicBlockRef ThenBB = DeclareBB(LLVMValueAsBasicBlock(Then));
+ Dst = LLVMBuildCondBr(Builder, Cond, ThenBB, ElseBB);
break;
}
case LLVMSwitch:
@@ -311,6 +322,13 @@ struct FunCloner {
Dst = LLVMBuildAlloca(Builder, Ty, Name);
break;
}
+ case LLVMICmp: {
+ LLVMIntPredicate Pred = LLVMGetICmpPredicate(Src);
+ LLVMValueRef LHS = CloneValue(LLVMGetOperand(Src, 0), Builder);
+ LLVMValueRef RHS = CloneValue(LLVMGetOperand(Src, 1), Builder);
+ Dst = LLVMBuildICmp(Builder, Pred, LHS, RHS, Name);
+ break;
+ }
case LLVMCall: {
int ArgCount = LLVMGetNumOperands(Src) - 1;
SmallVector<LLVMValueRef, 8> Args;