summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/CodeGen/CGExprAgg.cpp15
-rw-r--r--clang/test/CodeGen/exprs.c5
2 files changed, 14 insertions, 6 deletions
diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp
index 9d6df5c820d..2e45f2017b4 100644
--- a/clang/lib/CodeGen/CGExprAgg.cpp
+++ b/clang/lib/CodeGen/CGExprAgg.cpp
@@ -64,16 +64,19 @@ public:
void VisitMemberExpr(MemberExpr *ME) { EmitAggLoadOfLValue(ME); }
void VisitUnaryDeref(UnaryOperator *E) { EmitAggLoadOfLValue(E); }
void VisitStringLiteral(StringLiteral *E) { EmitAggLoadOfLValue(E); }
- void VisitCompoundLiteralExpr(CompoundLiteralExpr *E)
- { EmitAggLoadOfLValue(E); }
-
+ void VisitCompoundLiteralExpr(CompoundLiteralExpr *E) {
+ EmitAggLoadOfLValue(E);
+ }
void VisitArraySubscriptExpr(ArraySubscriptExpr *E) {
EmitAggLoadOfLValue(E);
}
+ void VisitBlockDeclRefExpr(const BlockDeclRefExpr *E) {
+ EmitAggLoadOfLValue(E);
+ }
+ void VisitPredefinedExpr(const PredefinedExpr *E) {
+ EmitAggLoadOfLValue(E);
+ }
- void VisitBlockDeclRefExpr(const BlockDeclRefExpr *E)
- { EmitAggLoadOfLValue(E); }
-
// Operators.
// case Expr::UnaryOperatorClass:
// case Expr::CastExprClass:
diff --git a/clang/test/CodeGen/exprs.c b/clang/test/CodeGen/exprs.c
index 0e74b8c7732..f80ee419580 100644
--- a/clang/test/CodeGen/exprs.c
+++ b/clang/test/CodeGen/exprs.c
@@ -94,3 +94,8 @@ struct s6 { int f0; };
int f6(int a0, struct s6 a1, struct s6 a2) {
return (a0 ? a1 : a2).f0;
}
+
+// PR4026
+void f7() {
+ __func__;
+}
OpenPOWER on IntegriCloud