summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-21 23:00:09 +0000
committerChris Lattner <sabre@nondot.org>2009-04-21 23:00:09 +0000
commit2f343dd5c83d659d52c217c251ffd1fbcd018110 (patch)
tree7f950e04b105ef649b85fd9287badaa542532925 /clang
parentd79b5a85b059239f8af69c009a78ab10f49af2be (diff)
downloadbcm5719-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.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