mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-04 22:07:27 +00:00
Adjust to match new ListReducer interface
Move function to generic code git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5910 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b4ebe13643
commit
39aebca3a2
@ -32,13 +32,13 @@ class ReduceMiscompilingPasses : public ListReducer<const PassInfo*> {
|
||||
public:
|
||||
ReduceMiscompilingPasses(BugDriver &bd) : BD(bd) {}
|
||||
|
||||
virtual TestResult doTest(const std::vector<const PassInfo*> &Prefix,
|
||||
const std::vector<const PassInfo*> &Kept);
|
||||
virtual TestResult doTest(std::vector<const PassInfo*> &Prefix,
|
||||
std::vector<const PassInfo*> &Kept);
|
||||
};
|
||||
|
||||
ReduceMiscompilingPasses::TestResult
|
||||
ReduceMiscompilingPasses::doTest(const std::vector<const PassInfo*> &Prefix,
|
||||
const std::vector<const PassInfo*> &Kept) {
|
||||
ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix,
|
||||
std::vector<const PassInfo*> &Kept) {
|
||||
// First, run the program with just the Kept passes. If it is still broken
|
||||
// with JUST the kept passes, discard the prefix passes.
|
||||
std::cout << "Checking to see if '" << getPassesString(Kept)
|
||||
@ -135,8 +135,8 @@ class ReduceMiscompilingFunctions : public ListReducer<Function*> {
|
||||
public:
|
||||
ReduceMiscompilingFunctions(BugDriver &bd) : BD(bd) {}
|
||||
|
||||
virtual TestResult doTest(const std::vector<Function*> &Prefix,
|
||||
const std::vector<Function*> &Kept) {
|
||||
virtual TestResult doTest(std::vector<Function*> &Prefix,
|
||||
std::vector<Function*> &Kept) {
|
||||
if (TestFuncs(Kept, false))
|
||||
return KeepSuffix;
|
||||
if (!Prefix.empty() && TestFuncs(Prefix, false))
|
||||
@ -147,21 +147,6 @@ public:
|
||||
bool TestFuncs(const std::vector<Function*> &Prefix, bool EmitBytecode);
|
||||
};
|
||||
|
||||
// DeleteFunctionBody - "Remove" the function by deleting all of it's basic
|
||||
// blocks, making it external.
|
||||
//
|
||||
static void DeleteFunctionBody(Function *F) {
|
||||
// First, break circular use/def chain references...
|
||||
for (Function::iterator I = F->begin(), E = F->end(); I != E; ++I)
|
||||
I->dropAllReferences();
|
||||
|
||||
// Next, delete all of the basic blocks.
|
||||
F->getBasicBlockList().clear();
|
||||
|
||||
assert(F->isExternal() && "This didn't make the function external!");
|
||||
}
|
||||
|
||||
|
||||
bool ReduceMiscompilingFunctions::TestFuncs(const std::vector<Function*> &Funcs,
|
||||
bool EmitBytecode) {
|
||||
// Test to see if the function is misoptimized if we ONLY run it on the
|
||||
|
Loading…
Reference in New Issue
Block a user