Files
clang-p2996/llvm/tools/llvm-reduce/TestRunner.h
Matt Arsenault 9c8b89f580 llvm-reduce: Refine missing argument behavior
We required the test and input arguments for --print-delta-passes
which is unhelpful. Also, start printing the help output if no
arguments were supplied.

It looks like there's more sophisticated ways to accomplish this with
the opt library, but it was less work to manually emit these errors.
2023-01-03 16:01:36 -05:00

67 lines
2.0 KiB
C++

//===-- tools/llvm-reduce/TestRunner.h ---------------------------*- C++ -*-===/
//
// 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_LLVM_REDUCE_TESTRUNNER_H
#define LLVM_TOOLS_LLVM_REDUCE_TESTRUNNER_H
#include "ReducerWorkItem.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Program.h"
#include "llvm/Target/TargetMachine.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, const std::vector<std::string> &TestArgs,
std::unique_ptr<ReducerWorkItem> Program,
std::unique_ptr<TargetMachine> TM, StringRef ToolName,
StringRef OutputFilename, bool InputIsBitcode, bool OutputBitcode);
/// Runs the interesting-ness test for the specified file
/// @returns 0 if test was successful, 1 if otherwise
int run(StringRef Filename) const;
/// Returns the most reduced version of the original testcase
ReducerWorkItem &getProgram() const { return *Program; }
void setProgram(std::unique_ptr<ReducerWorkItem> P);
const TargetMachine *getTargetMachine() const { return TM.get(); }
StringRef getToolName() const { return ToolName; }
void writeOutput(StringRef Message);
bool inputIsBitcode() const {
return InputIsBitcode;
}
private:
StringRef TestName;
StringRef ToolName;
const std::vector<std::string> &TestArgs;
std::unique_ptr<ReducerWorkItem> Program;
std::unique_ptr<TargetMachine> TM;
StringRef OutputFilename;
const bool InputIsBitcode;
bool EmitBitcode;
};
} // namespace llvm
#endif