diff --git a/ctx.cpp b/ctx.cpp index 9f7c3bfb..872751eb 100644 --- a/ctx.cpp +++ b/ctx.cpp @@ -553,8 +553,10 @@ FunctionEmitContext::EndIf() { breakLanes, "|break_lanes"); } - llvm::Value *notBreakOrContinue = - NotOperator(bcLanes, "!(break|continue)_lanes"); + llvm::Value *notBreakOrContinue = + BinaryOperator(llvm::Instruction::Xor, + bcLanes, LLVMMaskAllOn, + "!(break|continue)_lanes"); llvm::Value *oldMask = GetInternalMask(); llvm::Value *newMask = BinaryOperator(llvm::Instruction::And, oldMask, @@ -659,7 +661,9 @@ FunctionEmitContext::restoreMaskGivenReturns(llvm::Value *oldMask) { // newMask = (oldMask & ~returnedLanes) llvm::Value *returnedLanes = LoadInst(returnedLanesPtr, "returned_lanes"); - llvm::Value *notReturned = NotOperator(returnedLanes, "~returned_lanes"); + llvm::Value *notReturned = BinaryOperator(llvm::Instruction::Xor, + returnedLanes, LLVMMaskAllOn, + "~returned_lanes"); llvm::Value *newMask = BinaryOperator(llvm::Instruction::And, oldMask, notReturned, "new_mask"); SetInternalMask(newMask); diff --git a/expr.cpp b/expr.cpp index 7ef2c0d0..13dfe4eb 100644 --- a/expr.cpp +++ b/expr.cpp @@ -1796,8 +1796,7 @@ lEmitLogicalOp(BinaryExpr::Op op, Expr *arg0, Expr *arg1, // For the instances where value0 was true, we need to inhibit // execution. ctx->SetCurrentBasicBlock(bbEvalValue1); - llvm::Value *not0 = ctx->NotOperator(value0); - ctx->SetInternalMaskAnd(oldMask, not0); + ctx->SetInternalMaskAndNot(oldMask, value0); llvm::Value *value1 = arg1->GetValue(ctx); if (value1 == NULL) {