mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-17 18:31:04 +00:00
Disable machine LICM speculation check (for profitability) until I have time to investigate the regressions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141813 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
980df16920
commit
7007e4c556
@ -37,10 +37,16 @@
|
|||||||
#include "llvm/ADT/DenseMap.h"
|
#include "llvm/ADT/DenseMap.h"
|
||||||
#include "llvm/ADT/SmallSet.h"
|
#include "llvm/ADT/SmallSet.h"
|
||||||
#include "llvm/ADT/Statistic.h"
|
#include "llvm/ADT/Statistic.h"
|
||||||
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include "llvm/Support/Debug.h"
|
#include "llvm/Support/Debug.h"
|
||||||
#include "llvm/Support/raw_ostream.h"
|
#include "llvm/Support/raw_ostream.h"
|
||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
|
static cl::opt<bool>
|
||||||
|
AvoidSpeculation("avoid-speculation",
|
||||||
|
cl::desc("MachineLICM should avoid speculation"),
|
||||||
|
cl::init(false), cl::Hidden);
|
||||||
|
|
||||||
STATISTIC(NumHoisted,
|
STATISTIC(NumHoisted,
|
||||||
"Number of machine instructions hoisted out of loops");
|
"Number of machine instructions hoisted out of loops");
|
||||||
STATISTIC(NumLowRP,
|
STATISTIC(NumLowRP,
|
||||||
@ -1052,14 +1058,17 @@ bool MachineLICM::IsProfitableToHoist(MachineInstr &MI) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// High register pressure situation, only hoist if the instruction is going to
|
// Do not "speculate" in high register pressure situation. If an
|
||||||
// be remat'ed.
|
|
||||||
// Also, do not "speculate" in high register pressure situation. If an
|
|
||||||
// instruction is not guaranteed to be executed in the loop, it's best to be
|
// instruction is not guaranteed to be executed in the loop, it's best to be
|
||||||
// conservative.
|
// conservative.
|
||||||
if ((!IsGuaranteedToExecute(MI.getParent()) && !MayCSE(&MI)) ||
|
if (AvoidSpeculation &&
|
||||||
(!TII->isTriviallyReMaterializable(&MI, AA) &&
|
(!IsGuaranteedToExecute(MI.getParent()) && !MayCSE(&MI)))
|
||||||
!MI.isInvariantLoad(AA)))
|
return false;
|
||||||
|
|
||||||
|
// High register pressure situation, only hoist if the instruction is going to
|
||||||
|
// be remat'ed.
|
||||||
|
if (!TII->isTriviallyReMaterializable(&MI, AA) &&
|
||||||
|
!MI.isInvariantLoad(AA))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user