diff options
-rw-r--r-- | lib/CodeGen/CGExprAgg.cpp | 15 | ||||
-rw-r--r-- | test/CodeGen/exprs.c | 5 |
2 files changed, 14 insertions, 6 deletions
diff --git a/lib/CodeGen/CGExprAgg.cpp b/lib/CodeGen/CGExprAgg.cpp index 9d6df5c820..2e45f2017b 100644 --- a/lib/CodeGen/CGExprAgg.cpp +++ b/lib/CodeGen/CGExprAgg.cpp @@ -64,16 +64,19 @@ public: void VisitMemberExpr(MemberExpr *ME) { EmitAggLoadOfLValue(ME); } void VisitUnaryDeref(UnaryOperator *E) { EmitAggLoadOfLValue(E); } void VisitStringLiteral(StringLiteral *E) { EmitAggLoadOfLValue(E); } - void VisitCompoundLiteralExpr(CompoundLiteralExpr *E) - { EmitAggLoadOfLValue(E); } - + void VisitCompoundLiteralExpr(CompoundLiteralExpr *E) { + EmitAggLoadOfLValue(E); + } void VisitArraySubscriptExpr(ArraySubscriptExpr *E) { EmitAggLoadOfLValue(E); } + void VisitBlockDeclRefExpr(const BlockDeclRefExpr *E) { + EmitAggLoadOfLValue(E); + } + void VisitPredefinedExpr(const PredefinedExpr *E) { + EmitAggLoadOfLValue(E); + } - void VisitBlockDeclRefExpr(const BlockDeclRefExpr *E) - { EmitAggLoadOfLValue(E); } - // Operators. // case Expr::UnaryOperatorClass: // case Expr::CastExprClass: diff --git a/test/CodeGen/exprs.c b/test/CodeGen/exprs.c index 0e74b8c773..f80ee41958 100644 --- a/test/CodeGen/exprs.c +++ b/test/CodeGen/exprs.c @@ -94,3 +94,8 @@ struct s6 { int f0; }; int f6(int a0, struct s6 a1, struct s6 a2) { return (a0 ? a1 : a2).f0; } + +// PR4026 +void f7() { + __func__; +} |