diff options
author | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-15 19:08:15 +0000 |
---|---|---|
committer | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-15 19:08:15 +0000 |
commit | ef4ad1a8b63801253279f37fdf75716206f29f17 (patch) | |
tree | b0bd1923c58b0c2bc6aadd93ace9bef4de5d6170 /llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp | |
parent | 1f2b727298de19a4e6de3fe28886628cec996b9b (diff) | |
download | bcm5719-llvm-ef4ad1a8b63801253279f37fdf75716206f29f17.tar.gz bcm5719-llvm-ef4ad1a8b63801253279f37fdf75716206f29f17.zip |
Revert [Bugpoint redesign] Added Pass to Remove Global Variables
This reverts r368918 because it was unstable!
It broke these builds:
* http://lab.llvm.org:8011/builders/lld-x86_64-ubuntu-fast/builds/4649
* http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/29966
* http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/29964
But surprisingly this passed:
* http://lab.llvm.org:8011/builders/clang-ppc64be-linux-lnt/builds/29965
llvm-svn: 369039
Diffstat (limited to 'llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp')
-rw-r--r-- | llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp deleted file mode 100644 index efe30c4ac3c..00000000000 --- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp +++ /dev/null @@ -1,71 +0,0 @@ -//===- ReduceGlobalVars.cpp - Specialized Delta Pass ----------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file implements a function which calls the Generic Delta pass in order -// to reduce initialized Global Variables in the provided Module. -// -//===----------------------------------------------------------------------===// - -#include "ReduceGlobalVars.h" - -/// Removes all the Initialized GVs that aren't inside the desired Chunks. -static void extractGVsFromModule(std::vector<Chunk> ChunksToKeep, - Module *Program) { - // Get GVs inside desired chunks - std::set<GlobalVariable *> GVsToKeep; - unsigned I = 0, GVCount = 0; - for (auto &GV : Program->globals()) - if (GV.hasInitializer() && I < ChunksToKeep.size()) { - if (ChunksToKeep[I].contains(++GVCount)) - GVsToKeep.insert(&GV); - if (GVCount == ChunksToKeep[I].end) - ++I; - } - - // Delete out-of-chunk GVs and their uses - std::vector<GlobalVariable *> ToRemove; - std::vector<Instruction *> InstToRemove; - for (auto &GV : Program->globals()) - if (GV.hasInitializer() && !GVsToKeep.count(&GV)) { - for (auto U : GV.users()) - if (auto *Inst = dyn_cast<Instruction>(U)) - InstToRemove.push_back(Inst); - - GV.replaceAllUsesWith(UndefValue::get(GV.getType())); - ToRemove.push_back(&GV); - } - - // Delete Instruction uses of unwanted GVs - for (auto *Inst : InstToRemove) { - Inst->replaceAllUsesWith(UndefValue::get(Inst->getType())); - Inst->eraseFromParent(); - } - - for (auto *GV : ToRemove) - GV->eraseFromParent(); -} - -/// Counts the amount of initialized GVs and displays their -/// respective name & index -static int countGVs(Module *Program) { - // TODO: Silence index with --quiet flag - outs() << "----------------------------\n"; - outs() << "GlobalVariable Index Reference:\n"; - int GVCount = 0; - for (auto &GV : Program->globals()) - if (GV.hasInitializer()) - outs() << "\t" << ++GVCount << ": " << GV.getName() << "\n"; - outs() << "----------------------------\n"; - return GVCount; -} - -void llvm::reduceGlobalsDeltaPass(TestRunner &Test) { - outs() << "*** Reducing GVs...\n"; - unsigned GVCount = countGVs(Test.getProgram()); - runDeltaPass(Test, GVCount, extractGVsFromModule); -} |