diff options
author | Seo Sanghyeon <sanxiyn@gmail.com> | 2007-12-14 02:04:12 +0000 |
---|---|---|
committer | Seo Sanghyeon <sanxiyn@gmail.com> | 2007-12-14 02:04:12 +0000 |
commit | 9b73b39f6fbf987acbbe6570d557d13f07c7e0f7 (patch) | |
tree | 790df41300db0706ca8b250d758253ea1c3dba3e | |
parent | 7777bb263f215c5251bd354ed82ff1dbe9153336 (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.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 |