diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2016-02-09 23:15:02 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2016-02-09 23:15:02 +0000 |
commit | e7e6217d2bf6b07d8144540915713766ada1c9e6 (patch) | |
tree | ddefe664b86e68cd19a4531ba8c9b4a84920175c /llvm/tools/llvm-c-test/echo.cpp | |
parent | d3bd97a97d8aa1eea6153b6bf39bc5a10ee0a981 (diff) | |
download | bcm5719-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.cpp | 22 |
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; |