aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CodeGen/CGExprAgg.cpp12
-rw-r--r--test/CodeGen/struct.c5
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