diff options
author | Matthias Braun <matze@braunis.de> | 2016-05-31 22:38:06 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2016-05-31 22:38:06 +0000 |
commit | f9acacaa928d7ba9db900c42893c244fb19714c4 (patch) | |
tree | 7a44766e0781f8f4342fb62db6a84f38009bd976 /llvm/lib/CodeGen/MachineScheduler.cpp | |
parent | cbb1d06ff2476e01a66908bcfdfa6058c5a4bfbd (diff) | |
download | bcm5719-llvm-f9acacaa928d7ba9db900c42893c244fb19714c4.tar.gz bcm5719-llvm-f9acacaa928d7ba9db900c42893c244fb19714c4.zip |
CodeGen: Refactor renameDisconnectedComponents() as a pass
Refactor LiveIntervals::renameDisconnectedComponents() to be a pass.
Also change the name to "RenameIndependentSubregs":
- renameDisconnectedComponents() worked on a MachineFunction at a time
so it is a natural candidate for a machine function pass.
- The algorithm is testable with a .mir test now.
- This also fixes a problem where the lazy renaming as part of the
MachineScheduler introduced IMPLICIT_DEF instructions after the number
of a nodes in a region were counted leading to a mismatch.
Differential Revision: http://reviews.llvm.org/D20507
llvm-svn: 271345
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineScheduler.cpp | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp index 5ea20c58620..f3b40d3b28f 100644 --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -882,16 +882,8 @@ void ScheduleDAGMILive::enterRegion(MachineBasicBlock *bb, ShouldTrackPressure = SchedImpl->shouldTrackPressure(); ShouldTrackLaneMasks = SchedImpl->shouldTrackLaneMasks(); - if (ShouldTrackLaneMasks) { - if (!ShouldTrackPressure) - report_fatal_error("ShouldTrackLaneMasks requires ShouldTrackPressure"); - // Dead subregister defs have no users and therefore no dependencies, - // moving them around may cause liveintervals to degrade into multiple - // components. Change independent components to have their own vreg to avoid - // this. - if (!DisconnectedComponentsRenamed) - LIS->renameDisconnectedComponents(); - } + assert((!ShouldTrackLaneMasks || ShouldTrackPressure) && + "ShouldTrackLaneMasks requires ShouldTrackPressure"); } // Setup the register pressure trackers for the top scheduled top and bottom |