summaryrefslogtreecommitdiffstats
path: root/llvm/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
commite7e6217d2bf6b07d8144540915713766ada1c9e6 (patch)
treeddefe664b86e68cd19a4531ba8c9b4a84920175c /llvm/tools/llvm-c-test/echo.cpp
parentd3bd97a97d8aa1eea6153b6bf39bc5a10ee0a981 (diff)
downloadbcm5719-llvm-e7e6217d2bf6b07d8144540915713766ada1c9e6.tar.gz
bcm5719-llvm-e7e6217d2bf6b07d8144540915713766ada1c9e6.zip
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 llvm-svn: 260321
Diffstat (limited to 'llvm/tools/llvm-c-test/echo.cpp')
-rw-r--r--llvm/tools/llvm-c-test/echo.cpp22
1 files changed, 20 insertions, 2 deletions
diff --git a/llvm/tools/llvm-c-test/echo.cpp b/llvm/tools/llvm-c-test/echo.cpp
index 97883863ed6..3e25d0e7702 100644
--- a/llvm/tools/llvm-c-test/echo.cpp
+++ b/llvm/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;
OpenPOWER on IntegriCloud