diff options
author | Amaury Sechet <deadalnix@gmail.com> | 2016-02-17 23:55:59 +0000 |
---|---|---|
committer | Amaury Sechet <deadalnix@gmail.com> | 2016-02-17 23:55:59 +0000 |
commit | 40bbe519e57498a7f9ccc1e5b15b6bd8aa1f841a (patch) | |
tree | 8bc66323a139b1010222429872006bf9c239b435 /llvm/tools/llvm-c-test | |
parent | 71434ff6429e1ff330bf3bfa8340b2421a0a2b31 (diff) | |
download | bcm5719-llvm-40bbe519e57498a7f9ccc1e5b15b6bd8aa1f841a.tar.gz bcm5719-llvm-40bbe519e57498a7f9ccc1e5b15b6bd8aa1f841a.zip |
Add upport for bitcast in the C API echo test
llvm-svn: 261177
Diffstat (limited to 'llvm/tools/llvm-c-test')
-rw-r--r-- | llvm/tools/llvm-c-test/echo.cpp | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/llvm/tools/llvm-c-test/echo.cpp b/llvm/tools/llvm-c-test/echo.cpp index 22cbcf1b618..229530155fc 100644 --- a/llvm/tools/llvm-c-test/echo.cpp +++ b/llvm/tools/llvm-c-test/echo.cpp @@ -276,12 +276,24 @@ LLVMValueRef clone_constant(LLVMValueRef Cst, LLVMModuleRef M) { if (LLVMIsUndef(Cst)) return LLVMGetUndef(TypeCloner(M).Clone(Cst)); + // Try float literal + if (LLVMIsAConstantFP(Cst)) + report_fatal_error("ConstantFP is not supported"); + // This kind of constant is not supported if (!LLVMIsAConstantExpr(Cst)) report_fatal_error("Expected a constant expression"); // At this point, it must be a constant expression - report_fatal_error("ConstantExpression are not supported"); + LLVMOpcode Op = LLVMGetConstOpcode(Cst); + switch(Op) { + case LLVMBitCast: + return LLVMConstBitCast(clone_constant(LLVMGetOperand(Cst, 0), M), + TypeCloner(M).Clone(Cst)); + default: + fprintf(stderr, "%d is not a supported opcode\n", Op); + exit(-1); + } } struct FunCloner { @@ -489,6 +501,11 @@ struct FunCloner { Dst = LLVMBuildGEP(Builder, Ptr, Idx.data(), NumIdx, Name); break; } + case LLVMBitCast: { + LLVMValueRef V = CloneValue(LLVMGetOperand(Src, 0)); + Dst = LLVMBuildBitCast(Builder, V, CloneType(Src), Name); + break; + } case LLVMICmp: { LLVMIntPredicate Pred = LLVMGetICmpPredicate(Src); LLVMValueRef LHS = CloneValue(LLVMGetOperand(Src, 0)); |