Browse Source

Merged PR 39: Linker: add resources to LLVMUsed so they don't get deleted prematurely

Linker: add resources to LLVMUsed so they don't get deleted prematurely
Tex Riddell 7 years ago
parent
commit
4b02d18ca2
1 changed files with 5 additions and 1 deletions
  1. 5 1
      lib/HLSL/DxilLinker.cpp

+ 5 - 1
lib/HLSL/DxilLinker.cpp

@@ -506,7 +506,11 @@ void DxilLinkJob::AddResourceToDM(DxilModule &DM) {
     basePtr->SetID(ID);
     basePtr->SetID(ID);
 
 
     basePtr->SetGlobalSymbol(GV);
     basePtr->SetGlobalSymbol(GV);
+    DM.GetLLVMUsed().push_back(GV);
   }
   }
+  // Prevent global vars used for resources from being deleted through optimizations
+  // while we still have hidden uses (pointers in resource vectors).
+  DM.EmitLLVMUsed();
 }
 }
 
 
 void DxilLinkJob::LinkNamedMDNodes(Module *pM, ValueToValueMapTy &vmap) {
 void DxilLinkJob::LinkNamedMDNodes(Module *pM, ValueToValueMapTy &vmap) {
@@ -769,7 +773,7 @@ DxilLinkJob::Link(std::pair<DxilFunctionLinkInfo *, DxilLib *> &entryLinkPair,
   // Add resource to DM.
   // Add resource to DM.
   // This should be after functions cloned.
   // This should be after functions cloned.
   AddResourceToDM(DM);
   AddResourceToDM(DM);
-  
+
   // Link metadata like debug info.
   // Link metadata like debug info.
   LinkNamedMDNodes(pM.get(), vmap);
   LinkNamedMDNodes(pM.get(), vmap);