|
@@ -2026,24 +2026,6 @@ OptimizeFunctions(Module &M, TargetLibraryInfo *TLI,
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- // LLVM's definition of dominance allows instructions that are cyclic
|
|
|
- // in unreachable blocks, e.g.:
|
|
|
- // %pat = select i1 %condition, @global, i16* %pat
|
|
|
- // because any instruction dominates an instruction in a block that's
|
|
|
- // not reachable from entry.
|
|
|
- // So, remove unreachable blocks from the function, because a) there's
|
|
|
- // no point in analyzing them and b) GlobalOpt should otherwise grow
|
|
|
- // some more complicated logic to break these cycles.
|
|
|
- // Removing unreachable blocks might invalidate the dominator so we
|
|
|
- // recalculate it.
|
|
|
- if (!F->isDeclaration()) {
|
|
|
- if (removeUnreachableBlocks(*F)) {
|
|
|
- auto &DT = LookupDomTree(*F);
|
|
|
- DT.recalculate(*F);
|
|
|
- Changed = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
Changed |= processGlobal(*F, TLI, LookupDomTree);
|
|
|
|
|
|
if (!F->hasLocalLinkage())
|