diff options
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/CodeGen/CGExprAgg.cpp | 12 | ||||
| -rw-r--r-- | clang/test/CodeGen/struct.c | 5 |
2 files changed, 12 insertions, 5 deletions
diff --git a/clang/CodeGen/CGExprAgg.cpp b/clang/CodeGen/CGExprAgg.cpp index 1d8b3114b7e..1d60a8656c2 100644 --- a/clang/CodeGen/CGExprAgg.cpp +++ b/clang/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/clang/test/CodeGen/struct.c b/clang/test/CodeGen/struct.c index 34cbec570a8..a52e538a7f6 100644 --- a/clang/test/CodeGen/struct.c +++ b/clang/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 |

