Actually store the pointer into the global variable, spotted by Eli.
llvm-svn: 91036
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp
index d240a3b..0b6ea5a 100644
--- a/clang/lib/CodeGen/CGDeclCXX.cpp
+++ b/clang/lib/CodeGen/CGDeclCXX.cpp
@@ -193,10 +193,13 @@
EmitBlock(InitBlock);
if (D.getType()->isReferenceType()) {
+ QualType T = D.getType();
// We don't want to pass true for IsInitializer here, because a static
// reference to a temporary does not extend its lifetime.
- EmitReferenceBindingToExpr(D.getInit(), D.getType(),
- /*IsInitializer=*/false);
+ RValue RV = EmitReferenceBindingToExpr(D.getInit(), T,
+ /*IsInitializer=*/false);
+ EmitStoreOfScalar(RV.getScalarVal(), GV, /*Volatile=*/false, T);
+
} else
EmitDeclInit(*this, D, GV);