]> granicus.if.org Git - clang/commitdiff
implement codegen of builtin_choose_expr for complex.
authorChris Lattner <sabre@nondot.org>
Fri, 24 Aug 2007 02:18:47 +0000 (02:18 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 24 Aug 2007 02:18:47 +0000 (02:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41349 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CGComplexExpr.cpp

index 38cdd05ec9cd25fcfcd0c3220eba8d2426e67028..ae937b58f4a222385dcab84a9be3e66d48540f1b 100644 (file)
@@ -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
 //===----------------------------------------------------------------------===//