summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDiego Trevino Ferrer <diegof30@gmail.com>2019-08-15 19:08:15 +0000
committerDiego Trevino Ferrer <diegof30@gmail.com>2019-08-15 19:08:15 +0000
commitef4ad1a8b63801253279f37fdf75716206f29f17 (patch)
treeb0bd1923c58b0c2bc6aadd93ace9bef4de5d6170
parent1f2b727298de19a4e6de3fe28886628cec996b9b (diff)
downloadbcm5719-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
-rwxr-xr-xllvm/test/Reduce/Inputs/remove-global-vars.py10
-rw-r--r--llvm/test/Reduce/remove-funcs.ll2
-rw-r--r--llvm/test/Reduce/remove-global-vars.ll30
-rw-r--r--llvm/tools/llvm-reduce/CMakeLists.txt1
-rw-r--r--llvm/tools/llvm-reduce/DeltaManager.h5
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.cpp71
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.h20
7 files changed, 1 insertions, 138 deletions
diff --git a/llvm/test/Reduce/Inputs/remove-global-vars.py b/llvm/test/Reduce/Inputs/remove-global-vars.py
deleted file mode 100755
index 81fbea937dd..00000000000
--- a/llvm/test/Reduce/Inputs/remove-global-vars.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-
-input = open(sys.argv[1], "r")
-for line in input:
- if "@interesting = global" in line:
- sys.exit(0)
-
-sys.exit(1) # IR isn't interesting
diff --git a/llvm/test/Reduce/remove-funcs.ll b/llvm/test/Reduce/remove-funcs.ll
index 5d675af96a3..5ff290a6c0b 100644
--- a/llvm/test/Reduce/remove-funcs.ll
+++ b/llvm/test/Reduce/remove-funcs.ll
@@ -3,7 +3,7 @@
;
; RUN: llvm-reduce --test %p/Inputs/remove-funcs.py %s
; RUN: cat reduced.ll | FileCheck %s
-; REQUIRES: plugins
+; REQUIRES: plugins, shell
; CHECK-NOT: uninteresting1()
define i32 @uninteresting1() {
diff --git a/llvm/test/Reduce/remove-global-vars.ll b/llvm/test/Reduce/remove-global-vars.ll
deleted file mode 100644
index 1241cd2c310..00000000000
--- a/llvm/test/Reduce/remove-global-vars.ll
+++ /dev/null
@@ -1,30 +0,0 @@
-; Test that llvm-reduce can remove uninteresting Global Variables as well as
-; their direct uses (which in turn are replaced with 'undef').
-;
-; RUN: llvm-reduce --test %p/Inputs/remove-global-vars.py %s
-; RUN: cat reduced.ll | FileCheck %s
-; REQUIRES: plugins
-
-; CHECK: @interesting = global
-@interesting = global i32 0, align 4
-; CHECK-NOT: global
-@uninteresting = global i32 1, align 4
-
-define i32 @main() {
-entry:
- ; CHECK-NOT: load i32, i32* @uninteresting, align 4
- %0 = load i32, i32* @uninteresting, align 4
- ; CHECK: store i32 undef, i32* @interesting, align 4
- store i32 %0, i32* @interesting, align 4
-
- ; CHECK: load i32, i32* @interesting, align 4
- %1 = load i32, i32* @interesting, align 4
- ; CHECK-NOT: store i32 %1, i32* @uninteresting, align 4
- store i32 %1, i32* @uninteresting, align 4
-
- ; CHECK: %inc = add nsw i32 undef, 1
- %inc = add nsw i32 %0, 1
- ; CHECK: store i32 %inc, i32* @interesting, align 4
- store i32 %inc, i32* @interesting, align 4
- ret i32 0
-}
diff --git a/llvm/tools/llvm-reduce/CMakeLists.txt b/llvm/tools/llvm-reduce/CMakeLists.txt
index 3ff7b7a18e9..8edc4f700eb 100644
--- a/llvm/tools/llvm-reduce/CMakeLists.txt
+++ b/llvm/tools/llvm-reduce/CMakeLists.txt
@@ -18,7 +18,6 @@ add_llvm_tool(llvm-reduce
TestRunner.cpp
deltas/Delta.cpp
deltas/ReduceFunctions.cpp
- deltas/ReduceGlobalVars.cpp
DEPENDS
intrinsics_gen
diff --git a/llvm/tools/llvm-reduce/DeltaManager.h b/llvm/tools/llvm-reduce/DeltaManager.h
index 8033d76f1d5..28d1cd989e3 100644
--- a/llvm/tools/llvm-reduce/DeltaManager.h
+++ b/llvm/tools/llvm-reduce/DeltaManager.h
@@ -14,16 +14,11 @@
#include "TestRunner.h"
#include "deltas/Delta.h"
#include "deltas/ReduceFunctions.h"
-#include "deltas/ReduceGlobalVars.h"
namespace llvm {
-// TODO: Add CLI option to run only specified Passes (for unit tests)
inline void runDeltaPasses(TestRunner &Tester) {
- outs() << "Reducing functions...\n";
reduceFunctionsDeltaPass(Tester);
- outs() << "Reducing GVs...\n";
- reduceGlobalsDeltaPass(Tester);
// TODO: Implement the remaining Delta Passes
}
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);
-}
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.h b/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.h
deleted file mode 100644
index d4a870aded5..00000000000
--- a/llvm/tools/llvm-reduce/deltas/ReduceGlobalVars.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//===- ReduceGlobalVars.h - 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 "Delta.h"
-#include "llvm/IR/Value.h"
-#include "llvm/Transforms/Utils/Cloning.h"
-
-namespace llvm {
-void reduceGlobalsDeltaPass(TestRunner &Test);
-} // namespace llvm
OpenPOWER on IntegriCloud