mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 12:41:49 +01:00
misched: Don't consider artificial edges weak edges.
For now be more conservative in case other out-of-tree schedulers rely on the old behavior of artificial edges. llvm-svn: 167808
This commit is contained in:
parent
ab44d906b6
commit
ce37595f51
@ -206,8 +206,7 @@ namespace llvm {
|
||||
/// not force ordering. Breaking a weak edge may require the scheduler to
|
||||
/// compensate, for example by inserting a copy.
|
||||
bool isWeak() const {
|
||||
return getKind() == Order
|
||||
&& (Contents.OrdKind == Artificial || Contents.OrdKind == Cluster);
|
||||
return getKind() == Order && Contents.OrdKind == Cluster;
|
||||
}
|
||||
|
||||
/// isArtificial - Test if this is an Order dependence that is marked
|
||||
|
@ -581,7 +581,7 @@ void SchedulePostRATDList::FixupKills(MachineBasicBlock *MBB) {
|
||||
void SchedulePostRATDList::ReleaseSucc(SUnit *SU, SDep *SuccEdge) {
|
||||
SUnit *SuccSU = SuccEdge->getSUnit();
|
||||
|
||||
if (SuccEdge->isArtificial()) {
|
||||
if (SuccEdge->isWeak()) {
|
||||
--SuccSU->WeakPredsLeft;
|
||||
return;
|
||||
}
|
||||
|
@ -100,11 +100,8 @@ bool SUnit::addPred(const SDep &D, bool Required) {
|
||||
++NumPreds;
|
||||
++N->NumSuccs;
|
||||
}
|
||||
// SD scheduler relies on artificial edges to enforce physreg
|
||||
// antidependence, so it doesn't treat them as weak edges.
|
||||
bool isWeak = D.isWeak() && N->isInstr();
|
||||
if (!N->isScheduled) {
|
||||
if (isWeak) {
|
||||
if (D.isWeak()) {
|
||||
++WeakPredsLeft;
|
||||
}
|
||||
else {
|
||||
@ -113,7 +110,7 @@ bool SUnit::addPred(const SDep &D, bool Required) {
|
||||
}
|
||||
}
|
||||
if (!isScheduled) {
|
||||
if (isWeak) {
|
||||
if (D.isWeak()) {
|
||||
++N->WeakSuccsLeft;
|
||||
}
|
||||
else {
|
||||
@ -160,9 +157,8 @@ void SUnit::removePred(const SDep &D) {
|
||||
--NumPreds;
|
||||
--N->NumSuccs;
|
||||
}
|
||||
bool isWeak = D.isWeak() && N->isInstr();
|
||||
if (!N->isScheduled) {
|
||||
if (isWeak)
|
||||
if (D.isWeak())
|
||||
--WeakPredsLeft;
|
||||
else {
|
||||
assert(NumPredsLeft > 0 && "NumPredsLeft will underflow!");
|
||||
@ -170,7 +166,7 @@ void SUnit::removePred(const SDep &D) {
|
||||
}
|
||||
}
|
||||
if (!isScheduled) {
|
||||
if (isWeak)
|
||||
if (D.isWeak())
|
||||
--N->WeakSuccsLeft;
|
||||
else {
|
||||
assert(N->NumSuccsLeft > 0 && "NumSuccsLeft will underflow!");
|
||||
|
Loading…
x
Reference in New Issue
Block a user