forked from OSchip/llvm-project
Handle Unary ! in EmitBranchOnBoolExpr, so that we can efficiently
codegen stuff like "if (!(X && Y))" llvm-svn: 59115
This commit is contained in:
parent
51e7118c30
commit
d95377341b
|
@ -263,7 +263,12 @@ void CodeGenFunction::EmitBranchOnBoolExpr(const Expr *Cond,
|
||||||
EmitBranchOnBoolExpr(CondBOp->getRHS(), TrueBlock, FalseBlock);
|
EmitBranchOnBoolExpr(CondBOp->getRHS(), TrueBlock, FalseBlock);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (const UnaryOperator *CondUOp = dyn_cast<UnaryOperator>(Cond)) {
|
||||||
|
// br(!x, t, f) -> br(x, f, t)
|
||||||
|
if (CondUOp->getOpcode() == UnaryOperator::LNot)
|
||||||
|
return EmitBranchOnBoolExpr(CondUOp->getSubExpr(), FalseBlock, TrueBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit the code with the fully general case.
|
// Emit the code with the fully general case.
|
||||||
|
|
Loading…
Reference in New Issue