diff options
author | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-07 00:00:52 +0000 |
---|---|---|
committer | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-07 00:00:52 +0000 |
commit | 099e5c5bba23e06a7840d79ffcf66e9cd98cd52c (patch) | |
tree | c9bf3c05ed080c134d725ba378a071451c737ea9 /llvm/tools/llvm-reduce/deltas/RemoveFunctions.h | |
parent | feef101ac2f6fe4f75670613dee7ab8408d93b2b (diff) | |
download | bcm5719-llvm-099e5c5bba23e06a7840d79ffcf66e9cd98cd52c.tar.gz bcm5719-llvm-099e5c5bba23e06a7840d79ffcf66e9cd98cd52c.zip |
Added Delta IR Reduction Tool
Summary: Tool parses input IR file, and runs the delta debugging algorithm to reduce the functions inside the input file.
Reviewers: alexshap, chandlerc
Subscribers: mgorny, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D63672
> llvm-svn: 368071
llvm-svn: 368112
Diffstat (limited to 'llvm/tools/llvm-reduce/deltas/RemoveFunctions.h')
-rw-r--r-- | llvm/tools/llvm-reduce/deltas/RemoveFunctions.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/llvm/tools/llvm-reduce/deltas/RemoveFunctions.h b/llvm/tools/llvm-reduce/deltas/RemoveFunctions.h new file mode 100644 index 00000000000..3a6e501dc93 --- /dev/null +++ b/llvm/tools/llvm-reduce/deltas/RemoveFunctions.h @@ -0,0 +1,28 @@ +//===- llvm-reduce.cpp - The LLVM Delta Reduction utility -----------------===// +// +// 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 is a Specialized Delta Pass, which removes the functions that are +// not in the provided function-chunks. +// +//===----------------------------------------------------------------------===// + +#include "Delta.h" +#include "llvm/Transforms/Utils/Cloning.h" + +namespace llvm { + +class RemoveFunctions { +public: + /// Outputs the number of Functions in the given Module + static int getTargetCount(Module *Program); + /// Clones module and returns it with chunk functions only + static std::unique_ptr<Module> + extractChunksFromModule(std::vector<Chunk> ChunksToKeep, Module *Program); +}; + +} // namespace llvm |