diff options
-rw-r--r-- | CodeGen/CGExprAgg.cpp | 12 | ||||
-rw-r--r-- | test/CodeGen/struct.c | 5 |
2 files changed, 12 insertions, 5 deletions
diff --git a/CodeGen/CGExprAgg.cpp b/CodeGen/CGExprAgg.cpp index 1d8b3114b7..1d60a8656c 100644 --- a/CodeGen/CGExprAgg.cpp +++ b/CodeGen/CGExprAgg.cpp @@ -59,11 +59,13 @@ public: void VisitParenExpr(ParenExpr *PE) { Visit(PE->getSubExpr()); } // l-values. - void VisitDeclRefExpr(DeclRefExpr *DRE) { return EmitAggLoadOfLValue(DRE); } - void VisitMemberExpr(MemberExpr *ME) { return EmitAggLoadOfLValue(ME); } - void VisitUnaryDeref(UnaryOperator *E) { return EmitAggLoadOfLValue(E); } - - // case Expr::ArraySubscriptExprClass: + void VisitDeclRefExpr(DeclRefExpr *DRE) { EmitAggLoadOfLValue(DRE); } + void VisitMemberExpr(MemberExpr *ME) { EmitAggLoadOfLValue(ME); } + void VisitUnaryDeref(UnaryOperator *E) { EmitAggLoadOfLValue(E); } + + void VisitArraySubscriptExpr(ArraySubscriptExpr *E) { + EmitAggLoadOfLValue(E); + } // Operators. // case Expr::UnaryOperatorClass: diff --git a/test/CodeGen/struct.c b/test/CodeGen/struct.c index 34cbec570a..a52e538a7f 100644 --- a/test/CodeGen/struct.c +++ b/test/CodeGen/struct.c @@ -94,6 +94,11 @@ void f9(range *p) range r = *p; } +void f10(range *p) +{ + range r = p[0]; +} + /* _Bool types */ struct _w |