From: Devang Patel Date: Wed, 24 Oct 2007 17:18:43 +0000 (+0000) Subject: Visit CompoundLiteralExpr and InitListExpr X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=35634f5ed67966c9f1fde38420e79cc6515cd673;p=clang Visit CompoundLiteralExpr and InitListExpr git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43300 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CodeGen/CGExprScalar.cpp b/CodeGen/CGExprScalar.cpp index 012cb69c32..d23473a64c 100644 --- a/CodeGen/CGExprScalar.cpp +++ b/CodeGen/CGExprScalar.cpp @@ -119,8 +119,22 @@ public: Value *VisitOCUVectorElementExpr(Expr *E) { return EmitLoadOfLValue(E); } Value *VisitStringLiteral(Expr *E) { return EmitLValue(E).getAddress(); } Value *VisitPreDefinedExpr(Expr *E) { return EmitLValue(E).getAddress(); } - - // FIXME: CompoundLiteralExpr + + Value *VisitInitListExpr(InitListExpr *E) { + std::vector Elements; + unsigned N = E->getNumInits(); + for (unsigned i = 0; i < N; ++i) { + Value *V = Visit(E->getInit(i)); + llvm::Constant * C = cast(V); + Elements.push_back(C); + } + return llvm::ConstantVector::get(Elements); + } + + Value *VisitCompoundLiteralExpr(CompoundLiteralExpr *E) { + return Visit(E->getInitializer()); + } + Value *VisitImplicitCastExpr(const ImplicitCastExpr *E); Value *VisitCastExpr(const CastExpr *E) { return EmitCastExpr(E->getSubExpr(), E->getType());