projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge the used symbol scanning of MCObjectStreamer and RecordStreamer.
[oota-llvm.git]
/
tools
/
bugpoint
/
BugDriver.cpp
diff --git
a/tools/bugpoint/BugDriver.cpp
b/tools/bugpoint/BugDriver.cpp
index 677d17887f40cec78b255d35bdc892bd12e81d1d..cecccbe0f0ef52268d7425aa67be4a73c92f96fc 100644
(file)
--- a/
tools/bugpoint/BugDriver.cpp
+++ b/
tools/bugpoint/BugDriver.cpp
@@
-15,15
+15,15
@@
#include "BugDriver.h"
#include "ToolRunner.h"
#include "BugDriver.h"
#include "ToolRunner.h"
-#include "llvm/Linker.h"
-#include "llvm/Module.h"
+#include "llvm/IR/Module.h"
+#include "llvm/IRReader/IRReader.h"
+#include "llvm/Linker/Linker.h"
#include "llvm/Pass.h"
#include "llvm/Pass.h"
-#include "llvm/Support/IRReader.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileUtilities.h"
+#include "llvm/Support/Host.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/Host.h"
#include <memory>
using namespace llvm;
#include <memory>
using namespace llvm;
@@
-70,12
+70,16
@@
BugDriver::BugDriver(const char *toolname, bool find_bugs,
unsigned timeout, unsigned memlimit, bool use_valgrind,
LLVMContext& ctxt)
: Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
unsigned timeout, unsigned memlimit, bool use_valgrind,
LLVMContext& ctxt)
: Context(ctxt), ToolName(toolname), ReferenceOutputFile(OutputFile),
- Program(
0), Interpreter(0), SafeInterpreter(0), gcc(0
),
- run_find_bugs(find_bugs), Timeout(timeout),
+ Program(
nullptr), Interpreter(nullptr), SafeInterpreter(nullptr
),
+
gcc(nullptr),
run_find_bugs(find_bugs), Timeout(timeout),
MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
BugDriver::~BugDriver() {
delete Program;
MemoryLimit(memlimit), UseValgrind(use_valgrind) {}
BugDriver::~BugDriver() {
delete Program;
+ if (Interpreter != SafeInterpreter)
+ delete Interpreter;
+ delete SafeInterpreter;
+ delete gcc;
}
}
@@
-87,7
+91,7
@@
Module *llvm::ParseInputFile(const std::string &Filename,
SMDiagnostic Err;
Module *Result = ParseIRFile(Filename, Err, Ctxt);
if (!Result)
SMDiagnostic Err;
Module *Result = ParseIRFile(Filename, Err, Ctxt);
if (!Result)
- Err.
P
rint("bugpoint", errs());
+ Err.
p
rint("bugpoint", errs());
// If we don't have an override triple, use the first one to configure
// bugpoint, or use the host triple if none provided.
// If we don't have an override triple, use the first one to configure
// bugpoint, or use the host triple if none provided.
@@
-96,7
+100,7
@@
Module *llvm::ParseInputFile(const std::string &Filename,
Triple TheTriple(Result->getTargetTriple());
if (TheTriple.getTriple().empty())
Triple TheTriple(Result->getTargetTriple());
if (TheTriple.getTriple().empty())
- TheTriple.setTriple(sys::get
Hos
tTriple());
+ TheTriple.setTriple(sys::get
DefaultTarge
tTriple());
TargetTriple.setTriple(TheTriple.getTriple());
}
TargetTriple.setTriple(TheTriple.getTriple());
}
@@
-112,18
+116,18
@@
Module *llvm::ParseInputFile(const std::string &Filename,
// parsed), and false on success.
//
bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
// parsed), and false on success.
//
bool BugDriver::addSources(const std::vector<std::string> &Filenames) {
- assert(
Program == 0
&& "Cannot call addSources multiple times!");
+ assert(
!Program
&& "Cannot call addSources multiple times!");
assert(!Filenames.empty() && "Must specify at least on input filename!");
// Load the first input file.
Program = ParseInputFile(Filenames[0], Context);
assert(!Filenames.empty() && "Must specify at least on input filename!");
// Load the first input file.
Program = ParseInputFile(Filenames[0], Context);
- if (
Program == 0
) return true;
+ if (
!Program
) return true;
outs() << "Read input file : '" << Filenames[0] << "'\n";
for (unsigned i = 1, e = Filenames.size(); i != e; ++i) {
outs() << "Read input file : '" << Filenames[0] << "'\n";
for (unsigned i = 1, e = Filenames.size(); i != e; ++i) {
- std::
auto
_ptr<Module> M(ParseInputFile(Filenames[i], Context));
- if (
M.get() == 0
) return true;
+ std::
unique
_ptr<Module> M(ParseInputFile(Filenames[i], Context));
+ if (
!M.get()
) return true;
outs() << "Linking in input file: '" << Filenames[i] << "'\n";
std::string ErrorMessage;
outs() << "Linking in input file: '" << Filenames[i] << "'\n";
std::string ErrorMessage;
@@
-156,7
+160,7
@@
bool BugDriver::run(std::string &ErrMsg) {
// If we're not running as a child, the first thing that we must do is
// determine what the problem is. Does the optimization series crash the
// compiler, or does it produce illegal code? We make the top-level
// If we're not running as a child, the first thing that we must do is
// determine what the problem is. Does the optimization series crash the
// compiler, or does it produce illegal code? We make the top-level
- // decision by trying to run all of the passes on the
the
input program,
+ // decision by trying to run all of the passes on the input program,
// which should generate a bitcode file. If it does generate a bitcode
// file, then we know the compiler didn't crash, so try to diagnose a
// miscompilation.
// which should generate a bitcode file. If it does generate a bitcode
// file, then we know the compiler didn't crash, so try to diagnose a
// miscompilation.
@@
-194,8
+198,8
@@
bool BugDriver::run(std::string &ErrMsg) {
// Make sure the reference output file gets deleted on exit from this
// function, if appropriate.
// Make sure the reference output file gets deleted on exit from this
// function, if appropriate.
- s
ys::Path
ROF(ReferenceOutputFile);
- FileRemover RemoverInstance(ROF
.str()
, CreatedOutput && !SaveTemps);
+ s
td::string
ROF(ReferenceOutputFile);
+ FileRemover RemoverInstance(ROF, CreatedOutput && !SaveTemps);
// Diff the output of the raw program against the reference output. If it
// matches, then we assume there is a miscompilation bug and try to
// Diff the output of the raw program against the reference output. If it
// matches, then we assume there is a miscompilation bug and try to