Revert "[IR] Move optional data in llvm::Function into a hungoff uselist"
[oota-llvm.git] / lib / Transforms / IPO / GlobalDCE.cpp
index 9b276ed28e2e0e14604c97a78f5608747b4e492d..1cc657458d6745114553dfc40970a918a6dfb895 100644 (file)
@@ -215,8 +215,14 @@ void GlobalDCE::GlobalIsNeeded(GlobalValue *G) {
     // any globals used will be marked as needed.
     Function *F = cast<Function>(G);
 
-    for (Use &U : F->operands())
-      MarkUsedGlobalsAsNeeded(cast<Constant>(U.get()));
+    if (F->hasPrefixData())
+      MarkUsedGlobalsAsNeeded(F->getPrefixData());
+
+    if (F->hasPrologueData())
+      MarkUsedGlobalsAsNeeded(F->getPrologueData());
+
+    if (F->hasPersonalityFn())
+      MarkUsedGlobalsAsNeeded(F->getPersonalityFn());
 
     for (BasicBlock &BB : *F)
       for (Instruction &I : BB)