summaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2020-01-17 20:27:24 +0000
committerDimitry Andric <dim@FreeBSD.org>2020-01-17 20:27:24 +0000
commit7cc9cf2bf09f069cb2dd947ead05d0b54301fb71 (patch)
tree2bac2b35d5d597aa34805cb4b4b2644599b58f6a /llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
parentc80d8fac37703ecdd2c24b90267e62ce8e9b4ea5 (diff)
Notes
Diffstat (limited to 'llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp')
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp65
1 files changed, 0 insertions, 65 deletions
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp b/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
deleted file mode 100644
index b3497ad2dc02d..0000000000000
--- a/llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//===- ReduceArguments.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 uninteresting Arguments from defined functions.
-//
-//===----------------------------------------------------------------------===//
-
-#include "ReduceInstructions.h"
-
-using namespace llvm;
-
-/// Removes out-of-chunk arguments from functions, and modifies their calls
-/// accordingly. It also removes allocations of out-of-chunk arguments.
-static void extractInstrFromModule(std::vector<Chunk> ChunksToKeep,
- Module *Program) {
- int I = 0, InstCount = 0;
- std::set<Instruction *> InstToKeep;
-
- for (auto &F : *Program)
- for (auto &BB : F)
- for (auto &Inst : BB)
- if (I < (int)ChunksToKeep.size()) {
- if (ChunksToKeep[I].contains(++InstCount))
- InstToKeep.insert(&Inst);
- if (ChunksToKeep[I].end == InstCount)
- ++I;
- }
-
- std::vector<Instruction *> InstToDelete;
- for (auto &F : *Program)
- for (auto &BB : F)
- for (auto &Inst : BB)
- if (!InstToKeep.count(&Inst)) {
- Inst.replaceAllUsesWith(UndefValue::get(Inst.getType()));
- InstToDelete.push_back(&Inst);
- }
-
- for (auto &I : InstToDelete)
- I->eraseFromParent();
-}
-
-/// Counts the amount of basic blocks and prints their name & respective index
-static unsigned countInstructions(Module *Program) {
- // TODO: Silence index with --quiet flag
- outs() << "----------------------------\n";
- int InstCount = 0;
- for (auto &F : *Program)
- for (auto &BB : F)
- InstCount += BB.getInstList().size();
- outs() << "Number of instructions: " << InstCount << "\n";
-
- return InstCount;
-}
-
-void llvm::reduceInstructionsDeltaPass(TestRunner &Test) {
- outs() << "*** Reducing Insructions...\n";
- unsigned InstCount = countInstructions(Test.getProgram());
- runDeltaPass(Test, InstCount, extractInstrFromModule);
-}