Fix bug in lEmitVaryingSelect() for targets with i1 mask types.
Commit 53414f12e6 introduced a but where lEmitVaryingSelect() would
try to truncate a vector of i1s to a vector of i1s, which in turn
made LLVM's IR analyzer unhappy.
This commit is contained in:
3
expr.cpp
3
expr.cpp
@@ -3124,7 +3124,8 @@ lEmitVaryingSelect(FunctionEmitContext *ctx, llvm::Value *test,
|
|||||||
llvm::Value *expr1, llvm::Value *expr2,
|
llvm::Value *expr1, llvm::Value *expr2,
|
||||||
const Type *type) {
|
const Type *type) {
|
||||||
#if !defined(LLVM_3_1)
|
#if !defined(LLVM_3_1)
|
||||||
test = ctx->TruncInst(test, LLVMTypes::Int1VectorType);
|
if (test->getType() != LLVMTypes::Int1VectorType)
|
||||||
|
test = ctx->TruncInst(test, LLVMTypes::Int1VectorType);
|
||||||
return ctx->SelectInst(test, expr1, expr2, "select");
|
return ctx->SelectInst(test, expr1, expr2, "select");
|
||||||
#else
|
#else
|
||||||
llvm::Value *resultPtr = ctx->AllocaInst(expr1->getType(), "selectexpr_tmp");
|
llvm::Value *resultPtr = ctx->AllocaInst(expr1->getType(), "selectexpr_tmp");
|
||||||
|
|||||||
Reference in New Issue
Block a user