diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-21 23:00:09 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-21 23:00:09 +0000 |
commit | 2f343dd5c83d659d52c217c251ffd1fbcd018110 (patch) | |
tree | 7f950e04b105ef649b85fd9287badaa542532925 /clang | |
parent | d79b5a85b059239f8af69c009a78ab10f49af2be (diff) | |
download | bcm5719-llvm-2f343dd5c83d659d52c217c251ffd1fbcd018110.tar.gz bcm5719-llvm-2f343dd5c83d659d52c217c251ffd1fbcd018110.zip |
fix PR4026: Clang can't codegen __func__ without implicit cast
llvm-svn: 69747
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/CodeGen/CGExprAgg.cpp | 15 | ||||
-rw-r--r-- | clang/test/CodeGen/exprs.c | 5 |
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__; +} |