diff options
Diffstat (limited to 'clang')
-rw-r--r-- | clang/CodeGen/CGExprAgg.cpp | 2 | ||||
-rw-r--r-- | clang/test/CodeGen/struct.c | 15 |
2 files changed, 16 insertions, 1 deletions
diff --git a/clang/CodeGen/CGExprAgg.cpp b/clang/CodeGen/CGExprAgg.cpp index ea36225ba58..7646081d547 100644 --- a/clang/CodeGen/CGExprAgg.cpp +++ b/clang/CodeGen/CGExprAgg.cpp @@ -61,6 +61,8 @@ public: // l-values. void VisitDeclRefExpr(DeclRefExpr *DRE) { return EmitAggLoadOfLValue(DRE); } + void VisitMemberExpr(MemberExpr *ME) { return EmitAggLoadOfLValue(ME); } + // case Expr::ArraySubscriptExprClass: // Operators. diff --git a/clang/test/CodeGen/struct.c b/clang/test/CodeGen/struct.c index 83ac4d21951..329dfdeb6d4 100644 --- a/clang/test/CodeGen/struct.c +++ b/clang/test/CodeGen/struct.c @@ -73,7 +73,20 @@ typedef struct { extern range f6(); void f7() { - range r = f6(); + range r = f6(); +} + +/* Member expressions */ +typedef struct { + range range1; + range range2; +} rangepair; + +void f8() +{ + rangepair p; + + range r = p.range1; } |