aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeo Sanghyeon <sanxiyn@gmail.com>2007-12-14 02:04:12 +0000
committerSeo Sanghyeon <sanxiyn@gmail.com>2007-12-14 02:04:12 +0000
commit9b73b39f6fbf987acbbe6570d557d13f07c7e0f7 (patch)
tree790df41300db0706ca8b250d758253ea1c3dba3e
parent7777bb263f215c5251bd354ed82ff1dbe9153336 (diff)
Array subscription in aggregate expression
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45023 91177308-0d34-0410-b5e6-96231b3b80d8
-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