llvm.org GIT mirror llvm / bc0b567
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 Dan Gohman 11 years ago
4 changed file(s) with 14 addition(s) and 4 deletion(s). Raw diff Collapse all Expand all
139139
140140 // Top down: release successors.
141141 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
142 I != E; ++I)
142 I != E; ++I) {
143 assert(!I->isAssignedRegDep() &&
144 "The list-td scheduler doesn't yet support physreg dependencies!");
145
143146 ReleaseSucc(SU, *I);
147 }
144148
145149 SU->isScheduled = true;
146150 AvailableQueue->ScheduledNode(SU);
815815
816816 // Top down: release successors
817817 for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end();
818 I != E; ++I)
818 I != E; ++I) {
819 assert(!I->isAssignedRegDep() &&
820 "The list-tdrr scheduler doesn't yet support physreg dependencies!");
821
819822 ReleaseSucc(SU, &*I);
823 }
820824
821825 SU->isScheduled = true;
822826 AvailableQueue->ScheduledNode(SU);
0 ; RUN: llvm-as < %s | llc -pre-RA-sched=default
1 ; RUN: llvm-as < %s | llc -pre-RA-sched=list-td
2 ; RUN: llvm-as < %s | llc -pre-RA-sched=list-tdrr
31 ; RUN: llvm-as < %s | llc -pre-RA-sched=list-burr
42 ; RUN: llvm-as < %s | llc -pre-RA-sched=fast
53 ; PR859
4
5 ; The top-down schedulers are excluded here because they don't yet support
6 ; targets that use physreg defs.
67
78 declare i32 @printf(i8*, i32, float)
89
0 ; RUN: llvm-as < %s | llc -march=mips -f -o %t
11 ; RUN: grep {c\\..*\\.s} %t | count 3
22 ; RUN: grep {bc1\[tf\]} %t | count 3
3 ; XFAIL: *
34
45 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"
56 target triple = "mipsallegrexel-psp-elf"