summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-01-25 18:30:26 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-01-25 18:30:26 +0000
commit210031b79c35df85163d510355a89d7f02a9b7e3 (patch)
tree39910ef6af1b803158503ba12a657c40377dab26
parentfc060e43376a8ab07e0310db7b27b2232e3f08a8 (diff)
downloadbcm5719-llvm-210031b79c35df85163d510355a89d7f02a9b7e3.tar.gz
bcm5719-llvm-210031b79c35df85163d510355a89d7f02a9b7e3.zip
Fix a code gen. bug involving compiling global references.
(fixes radar 7574896). llvm-svn: 94434
-rw-r--r--clang/lib/CodeGen/CGDeclCXX.cpp4
-rw-r--r--clang/test/CodeGenCXX/reference-init.cpp5
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp
index 47773a0d69e..2d473de47ca 100644
--- a/clang/lib/CodeGen/CGDeclCXX.cpp
+++ b/clang/lib/CodeGen/CGDeclCXX.cpp
@@ -80,8 +80,8 @@ void CodeGenFunction::EmitCXXGlobalVarDeclInit(const VarDecl &D,
EmitDeclInit(*this, D, DeclPtr);
return;
}
-
- ErrorUnsupported(Init, "global variable that binds to a reference");
+ RValue RV = EmitReferenceBindingToExpr(Init, T, /*IsInitializer=*/true);
+ EmitStoreOfScalar(RV.getScalarVal(), DeclPtr, false, T);
}
void
diff --git a/clang/test/CodeGenCXX/reference-init.cpp b/clang/test/CodeGenCXX/reference-init.cpp
index 6c2c6a30168..61ae2daffda 100644
--- a/clang/test/CodeGenCXX/reference-init.cpp
+++ b/clang/test/CodeGenCXX/reference-init.cpp
@@ -14,3 +14,8 @@ namespace PR5911 {
int iarr[] = { 1 };
int test() { return f(iarr); }
}
+
+// radar 7574896
+struct Foo { int foo; };
+Foo& ignoreSetMutex = *(new Foo);
+
OpenPOWER on IntegriCloud