mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 18:04:59 +00:00
CodeGen: Move check of EnablePostRAScheduler to avoid disabling antidependency breaker
Previously, specifying -post-RA-scheduler=true had the side effect of disabling the antidependency breaker, yielding different behavior than if the post-RA-scheduler was enabled via the scheduling model. Differential Revision: http://reviews.llvm.org/D20186 llvm-svn: 270077
This commit is contained in:
parent
bcbd39476b
commit
c83bd382db
@ -103,6 +103,7 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
private:
|
||||
bool enablePostRAScheduler(
|
||||
const TargetSubtargetInfo &ST, CodeGenOpt::Level OptLevel,
|
||||
TargetSubtargetInfo::AntiDepBreakMode &Mode,
|
||||
@ -269,6 +270,11 @@ bool PostRAScheduler::enablePostRAScheduler(
|
||||
TargetSubtargetInfo::RegClassVector &CriticalPathRCs) const {
|
||||
Mode = ST.getAntiDepBreakMode();
|
||||
ST.getCriticalPathRCs(CriticalPathRCs);
|
||||
|
||||
// Check for explicit enable/disable of post-ra scheduling.
|
||||
if (EnablePostRAScheduler.getPosition() > 0)
|
||||
return EnablePostRAScheduler;
|
||||
|
||||
return ST.enablePostRAScheduler() &&
|
||||
OptLevel >= ST.getOptLevelToEnablePostRAScheduler();
|
||||
}
|
||||
@ -284,20 +290,15 @@ bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) {
|
||||
|
||||
RegClassInfo.runOnMachineFunction(Fn);
|
||||
|
||||
// Check for explicit enable/disable of post-ra scheduling.
|
||||
TargetSubtargetInfo::AntiDepBreakMode AntiDepMode =
|
||||
TargetSubtargetInfo::ANTIDEP_NONE;
|
||||
SmallVector<const TargetRegisterClass*, 4> CriticalPathRCs;
|
||||
if (EnablePostRAScheduler.getPosition() > 0) {
|
||||
if (!EnablePostRAScheduler)
|
||||
return false;
|
||||
} else {
|
||||
// Check that post-RA scheduling is enabled for this target.
|
||||
// This may upgrade the AntiDepMode.
|
||||
if (!enablePostRAScheduler(Fn.getSubtarget(), PassConfig->getOptLevel(),
|
||||
AntiDepMode, CriticalPathRCs))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check that post-RA scheduling is enabled for this target.
|
||||
// This may upgrade the AntiDepMode.
|
||||
if (!enablePostRAScheduler(Fn.getSubtarget(), PassConfig->getOptLevel(),
|
||||
AntiDepMode, CriticalPathRCs))
|
||||
return false;
|
||||
|
||||
// Check for antidep breaking override...
|
||||
if (EnableAntiDepBreaking.getPosition() > 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user