[PATCH] D19438: Reset the TopRPTracker's position in ScheduleDAGMILive::initQueues

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 22 14:56:12 PDT 2016


kparzysz created this revision.
kparzysz added a reviewer: atrick.
kparzysz added a subscriber: llvm-commits.
kparzysz set the repository for this revision to rL LLVM.
Herald added a subscriber: MatzeB.

ScheduleDAGMI::initQueues changes the RegionBegin to the first non-debug instruction. Since it does not track register pressure, it does not affect any RP trackers. ScheduleDAGMILive inherits initQueues from ScheduleDAGMI, and it does reset the TopTPTracker in its schedule method. Any derived, target-specific scheduler will need to do it as well, but the TopRPTracker is only exposed as a "const" object to derived classes. Without the ability to modify the tracker directly, this leaves a derived scheduler with a potential of having the TopRPTracker out-of-sync with the CurrentTop.

The symptom of the problem:

```
void llvm::ScheduleDAGMILive::scheduleMI(llvm::SUnit *, bool): Assertion `TopRPTracker.getPos() == CurrentTop && "out of sync"' failed.
```


Repository:
  rL LLVM

http://reviews.llvm.org/D19438

Files:
  include/llvm/CodeGen/MachineScheduler.h
  lib/CodeGen/MachineScheduler.cpp
  test/CodeGen/Hexagon/misched-top-rptracker-sync.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D19438.54732.patch
Type: text/x-patch
Size: 10307 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160422/6d58c284/attachment.bin>


More information about the llvm-commits mailing list