@@ -3899,19 +3899,26 @@ void PostGenericScheduler::initPolicy(MachineBasicBlock::iterator Begin,
38993899 unsigned NumRegionInstrs) {
39003900 const MachineFunction &MF = *Begin->getMF ();
39013901
3902+ // Default to top-down because it was implemented first and existing targets
3903+ // expect that behavior by default.
3904+ RegionPolicy.OnlyTopDown = true ;
3905+ RegionPolicy.OnlyBottomUp = false ;
3906+
39023907 // Allow the subtarget to override default policy.
39033908 MF.getSubtarget ().overridePostRASchedPolicy (RegionPolicy, NumRegionInstrs);
39043909
39053910 // After subtarget overrides, apply command line options.
3906- if (PostRADirection == MISchedPostRASched::TopDown) {
3907- RegionPolicy.OnlyTopDown = true ;
3908- RegionPolicy.OnlyBottomUp = false ;
3909- } else if (PostRADirection == MISchedPostRASched::BottomUp) {
3910- RegionPolicy.OnlyTopDown = false ;
3911- RegionPolicy.OnlyBottomUp = true ;
3912- } else if (PostRADirection == MISchedPostRASched::Bidirectional) {
3913- RegionPolicy.OnlyBottomUp = false ;
3914- RegionPolicy.OnlyTopDown = false ;
3911+ if (PostRADirection.getNumOccurrences () > 0 ) {
3912+ if (PostRADirection == MISchedPostRASched::TopDown) {
3913+ RegionPolicy.OnlyTopDown = true ;
3914+ RegionPolicy.OnlyBottomUp = false ;
3915+ } else if (PostRADirection == MISchedPostRASched::BottomUp) {
3916+ RegionPolicy.OnlyTopDown = false ;
3917+ RegionPolicy.OnlyBottomUp = true ;
3918+ } else if (PostRADirection == MISchedPostRASched::Bidirectional) {
3919+ RegionPolicy.OnlyBottomUp = false ;
3920+ RegionPolicy.OnlyTopDown = false ;
3921+ }
39153922 }
39163923}
39173924
0 commit comments