diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2009-12-25 06:17:05 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2009-12-25 06:17:05 +0000 |
commit | b8841af8bd0d8edb68e295f0d9156c34afdb9d13 (patch) | |
tree | 6fab089bd3f1d2ae6f1d88f10f150777a7111ce9 /clang/lib/CodeGen/CGExprAgg.cpp | |
parent | 2e06e8bbccc764742d271928b5a346611b740015 (diff) | |
download | bcm5719-llvm-b8841af8bd0d8edb68e295f0d9156c34afdb9d13.tar.gz bcm5719-llvm-b8841af8bd0d8edb68e295f0d9156c34afdb9d13.zip |
Minor optimization; emit proper unsupported messages for a couple of cases.
llvm-svn: 92153
Diffstat (limited to 'clang/lib/CodeGen/CGExprAgg.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGExprAgg.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index 16249e4aab5..b95fd799010 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -396,12 +396,16 @@ void AggExprEmitter::VisitBinAssign(const BinaryOperator *E) { } void AggExprEmitter::VisitConditionalOperator(const ConditionalOperator *E) { + if (!E->getLHS()) { + CGF.ErrorUnsupported(E, "conditional operator with missing LHS"); + return; + } + llvm::BasicBlock *LHSBlock = CGF.createBasicBlock("cond.true"); llvm::BasicBlock *RHSBlock = CGF.createBasicBlock("cond.false"); llvm::BasicBlock *ContBlock = CGF.createBasicBlock("cond.end"); - llvm::Value *Cond = CGF.EvaluateExprAsBool(E->getCond()); - Builder.CreateCondBr(Cond, LHSBlock, RHSBlock); + CGF.EmitBranchOnBoolExpr(E->getCond(), LHSBlock, RHSBlock); CGF.StartConditionalBranch(); CGF.EmitBlock(LHSBlock); |