Merge pull request #498 from jbrodman/master

Codegen Cleanup
This commit is contained in:
Dmitry Babokin
2013-05-17 11:31:31 -07:00
2 changed files with 8 additions and 5 deletions

10
ctx.cpp
View File

@@ -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);

View File

@@ -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) {