diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2020-01-17 20:27:24 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2020-01-17 20:27:24 +0000 |
| commit | 7cc9cf2bf09f069cb2dd947ead05d0b54301fb71 (patch) | |
| tree | 2bac2b35d5d597aa34805cb4b4b2644599b58f6a /llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp | |
| parent | c80d8fac37703ecdd2c24b90267e62ce8e9b4ea5 (diff) | |
Notes
Diffstat (limited to 'llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp')
| -rw-r--r-- | llvm/tools/llvm-reduce/deltas/ReduceInstructions.cpp | 65 |
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); -} |
