From: Chris Lattner Date: Fri, 24 Aug 2007 02:18:47 +0000 (+0000) Subject: implement codegen of builtin_choose_expr for complex. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d0b1203b1c982be34a56199c59c53ae15a953667;p=clang implement codegen of builtin_choose_expr for complex. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41349 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CodeGen/CGComplexExpr.cpp b/CodeGen/CGComplexExpr.cpp index 38cdd05ec9..ae937b58f4 100644 --- a/CodeGen/CGComplexExpr.cpp +++ b/CodeGen/CGComplexExpr.cpp @@ -118,6 +118,7 @@ public: ComplexPairTy VisitConditionalOperator(const ConditionalOperator *CO); + ComplexPairTy VisitChooseExpr(ChooseExpr *CE); // case Expr::ChooseExprClass: }; } // end anonymous namespace. @@ -313,6 +314,15 @@ VisitConditionalOperator(const ConditionalOperator *E) { return ComplexPairTy(RealPN, ImagPN); } +ComplexPairTy ComplexExprEmitter::VisitChooseExpr(ChooseExpr *E) { + llvm::APSInt CondVal(32); + bool IsConst = E->getCond()->isIntegerConstantExpr(CondVal, CGF.getContext()); + assert(IsConst && "Condition of choose expr must be i-c-e"); IsConst=IsConst; + + // Emit the LHS or RHS as appropriate. + return Visit(CondVal != 0 ? E->getLHS() : E->getRHS()); +} + //===----------------------------------------------------------------------===// // Entry Point into this File //===----------------------------------------------------------------------===//