GlobalOpt should maintain externally_initialized when splitting aggregates
[oota-llvm.git] / lib / Transforms / IPO / GlobalOpt.cpp
index 040fd7c83249bd4daf54b23e59455e71b361b304..01ea896727a0c5328e6495bb3eaf7bf2891c9b01 100644 (file)
@@ -497,6 +497,7 @@ static GlobalVariable *SRAGlobal(GlobalVariable *GV, const DataLayout &DL) {
                                                In, GV->getName()+"."+Twine(i),
                                                GV->getThreadLocalMode(),
                                               GV->getType()->getAddressSpace());
+      NGV->setExternallyInitialized(GV->isExternallyInitialized());
       Globals.insert(GV->getIterator(), NGV);
       NewGlobals.push_back(NGV);
 
@@ -530,6 +531,7 @@ static GlobalVariable *SRAGlobal(GlobalVariable *GV, const DataLayout &DL) {
                                                In, GV->getName()+"."+Twine(i),
                                                GV->getThreadLocalMode(),
                                               GV->getType()->getAddressSpace());
+      NGV->setExternallyInitialized(GV->isExternallyInitialized());
       Globals.insert(GV->getIterator(), NGV);
       NewGlobals.push_back(NGV);