diff options
| author | David Goodwin <david_goodwin@apple.com> | 2009-10-01 21:46:35 +0000 |
|---|---|---|
| committer | David Goodwin <david_goodwin@apple.com> | 2009-10-01 21:46:35 +0000 |
| commit | 9a051a59228af28662e7d796ae8323616bc01a23 (patch) | |
| tree | c3788d1a865cd773419a5e8ca9b6b783c37bf08e /llvm/lib/CodeGen | |
| parent | 6f012d83f2265a84f25253a998e8b3fe00f220f2 (diff) | |
| download | bcm5719-llvm-9a051a59228af28662e7d796ae8323616bc01a23.tar.gz bcm5719-llvm-9a051a59228af28662e7d796ae8323616bc01a23.zip | |
Restore the -post-RA-scheduler flag as an override for the target specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.
llvm-svn: 83215
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/PostRASchedulerList.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/PostRASchedulerList.cpp b/llvm/lib/CodeGen/PostRASchedulerList.cpp index 1a744be1bf0..eddc4890306 100644 --- a/llvm/lib/CodeGen/PostRASchedulerList.cpp +++ b/llvm/lib/CodeGen/PostRASchedulerList.cpp @@ -48,11 +48,17 @@ using namespace llvm; STATISTIC(NumNoops, "Number of noops inserted"); STATISTIC(NumStalls, "Number of pipeline stalls"); +// Post-RA scheduling is enabled with +// TargetSubtarget.enablePostRAScheduler(). This flag can be used to +// override the target. +static cl::opt<bool> +EnablePostRAScheduler("post-RA-scheduler", + cl::desc("Enable scheduling after register allocation"), + cl::init(false)); static cl::opt<bool> EnableAntiDepBreaking("break-anti-dependencies", cl::desc("Break post-RA scheduling anti-dependencies"), cl::init(true), cl::Hidden); - static cl::opt<bool> EnablePostRAHazardAvoidance("avoid-hazards", cl::desc("Enable exact hazard avoidance"), @@ -215,10 +221,16 @@ static bool isSchedulingBoundary(const MachineInstr *MI, } bool PostRAScheduler::runOnMachineFunction(MachineFunction &Fn) { - // Check that post-RA scheduling is enabled for this function - const TargetSubtarget &ST = Fn.getTarget().getSubtarget<TargetSubtarget>(); - if (!ST.enablePostRAScheduler()) - return true; + // Check for explicit enable/disable of post-ra scheduling. + if (EnablePostRAScheduler.getPosition() > 0) { + if (!EnablePostRAScheduler) + return true; + } else { + // Check that post-RA scheduling is enabled for this function + const TargetSubtarget &ST = Fn.getTarget().getSubtarget<TargetSubtarget>(); + if (!ST.enablePostRAScheduler()) + return true; + } DEBUG(errs() << "PostRAScheduler\n"); |

