The list-td and list-tdrr schedulers don't yet support physreg

scheduling dependencies. Add assertion checks to help catch
this.

It appears the Mips target defaults to list-td, and it has a
regression test that uses a physreg dependence. Such code was
liable to be miscompiled, and now evokes an assertion failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62177 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2009-01-13 20:24:13 +00:00
parent 6893cd7615
commit bc0b56732a
4 changed files with 14 additions and 4 deletions

View File

@ -140,8 +140,12 @@ void ScheduleDAGList::ScheduleNodeTopDown(SUnit *SU, unsigned CurCycle) {
// Top down: release successors.
for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
I != E; ++I)
I != E; ++I) {
assert(!I->isAssignedRegDep() &&
"The list-td scheduler doesn't yet support physreg dependencies!");
ReleaseSucc(SU, *I);
}
SU->isScheduled = true;
AvailableQueue->ScheduledNode(SU);

View File

@ -816,8 +816,12 @@ void ScheduleDAGRRList::ScheduleNodeTopDown(SUnit *SU, unsigned CurCycle) {
// Top down: release successors
for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
I != E; ++I)
I != E; ++I) {
assert(!I->isAssignedRegDep() &&
"The list-tdrr scheduler doesn't yet support physreg dependencies!");
ReleaseSucc(SU, &*I);
}
SU->isScheduled = true;
AvailableQueue->ScheduledNode(SU);

View File

@ -1,10 +1,11 @@
; RUN: llvm-as < %s | llc -pre-RA-sched=default
; RUN: llvm-as < %s | llc -pre-RA-sched=list-td
; RUN: llvm-as < %s | llc -pre-RA-sched=list-tdrr
; RUN: llvm-as < %s | llc -pre-RA-sched=list-burr
; RUN: llvm-as < %s | llc -pre-RA-sched=fast
; PR859
; The top-down schedulers are excluded here because they don't yet support
; targets that use physreg defs.
declare i32 @printf(i8*, i32, float)
define i32 @testissue(i32 %i, float %x, float %y) {

View File

@ -1,6 +1,7 @@
; RUN: llvm-as < %s | llc -march=mips -f -o %t
; RUN: grep {c\\..*\\.s} %t | count 3
; RUN: grep {bc1\[tf\]} %t | count 3
; XFAIL: *
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64"
target triple = "mipsallegrexel-psp-elf"