On Mon, Nov 23, 2009 at 1:56 PM, Anders Carlsson <[email protected]> wrote:
> --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Mon Nov 23 15:56:41 2009
> @@ -167,7 +167,14 @@
>
>   Value *VisitArraySubscriptExpr(ArraySubscriptExpr *E);
>   Value *VisitShuffleVectorExpr(ShuffleVectorExpr *E);
> -  Value *VisitMemberExpr(Expr *E)           { return EmitLoadOfLValue(E); }
> +  Value *VisitMemberExpr(MemberExpr *E) {
> +    if (const EnumConstantDecl *EC =
> +          dyn_cast<EnumConstantDecl>(E->getMemberDecl()))
> +      return llvm::ConstantInt::get(VMContext, EC->getInitVal());
> +
> +    return EmitLoadOfLValue(E);
> +  }
> +
>   Value *VisitExtVectorElementExpr(Expr *E) { return EmitLoadOfLValue(E); }
>   Value *VisitCompoundLiteralExpr(CompoundLiteralExpr *E) {
>     return EmitLoadOfLValue(E);

In FuncReturningPtr()->EnumConstant, it isn't legal to skip evaluating
FuncReturningPtr().

-Eli

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to