diff options
| author | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-06 18:59:11 +0000 |
|---|---|---|
| committer | Diego Trevino Ferrer <diegof30@gmail.com> | 2019-08-06 18:59:11 +0000 |
| commit | 800618f24190e0dcf32d8528cdd76426744a1b52 (patch) | |
| tree | c2005eccabde33ac1a39dbaa8b70167adafa3106 /llvm/tools/llvm-reduce/TestRunner.h | |
| parent | 7dfe0bc3c162877a4643831b7917fc195098aac6 (diff) | |
| download | bcm5719-llvm-800618f24190e0dcf32d8528cdd76426744a1b52.tar.gz bcm5719-llvm-800618f24190e0dcf32d8528cdd76426744a1b52.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
Diffstat (limited to 'llvm/tools/llvm-reduce/TestRunner.h')
| -rw-r--r-- | llvm/tools/llvm-reduce/TestRunner.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/llvm/tools/llvm-reduce/TestRunner.h b/llvm/tools/llvm-reduce/TestRunner.h new file mode 100644 index 00000000000..9fe104ffef4 --- /dev/null +++ b/llvm/tools/llvm-reduce/TestRunner.h @@ -0,0 +1,52 @@ +//===- 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 +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMREDUCE_TESTRUNNER_H +#define LLVM_TOOLS_LLVMREDUCE_TESTRUNNER_H + +#include "llvm/ADT/SmallString.h" +#include "llvm/IR/Module.h" +#include "llvm/Support/Error.h" +#include "llvm/Support/Program.h" +#include <vector> + +namespace llvm { + +// This class contains all the info necessary for running the provided +// interesting-ness test, as well as the most reduced module and its +// respective filename. +class TestRunner { +public: + TestRunner(StringRef TestName, std::vector<std::string> TestArgs, + StringRef ReducedFilepath, SmallString<128> TmpDirectory); + + /// Runs the interesting-ness test for the specified file + /// @returns 0 if test was successful, 1 if otherwise + int run(StringRef Filename); + + /// Filename to the most reduced testcase + StringRef getReducedFilepath() const { return ReducedFilepath; } + /// Directory where tmp files are created + StringRef getTmpDir() const { return TmpDirectory; } + /// Returns the most reduced version of the original testcase + Module *getProgram() const { return Program.get(); } + + void setReducedFilepath(SmallString<128> F) { ReducedFilepath = F; } + void setProgram(std::unique_ptr<Module> P) { Program = std::move(P); } + +private: + SmallString<128> TestName; + std::vector<std::string> TestArgs; + SmallString<128> ReducedFilepath; + SmallString<128> TmpDirectory; + std::unique_ptr<Module> Program; +}; + +} // namespace llvm + +#endif |

