Просмотр исходного кода

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 лет назад
Родитель
Сommit
4b02d18ca2
1 измененных файлов с 5 добавлено и 1 удалено
  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->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) {
@@ -769,7 +773,7 @@ DxilLinkJob::Link(std::pair<DxilFunctionLinkInfo *, DxilLib *> &entryLinkPair,
   // Add resource to DM.
   // This should be after functions cloned.
   AddResourceToDM(DM);
-  
+
   // Link metadata like debug info.
   LinkNamedMDNodes(pM.get(), vmap);