[PATCH] D14969: MachineScheduler: Allow independent scheduling of sub register defs
Andrew Trick via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 30 10:49:14 PST 2015
atrick requested changes to this revision.
atrick added a comment.
This revision now requires changes to proceed.
How does this avoid creating multiple disjoint live subranges for a single virtual register? Will verifyLiveInterval choke on this?
RegisterPressureTracker now mutates the machine instructions which is conceptually wrong. If there is no other efficient way to handle setting the read-undef flags, then this needs to be very clearly documented in the tracker API and where the scheduler forces it to be used for subregisters.
================
Comment at: lib/CodeGen/MachineScheduler.cpp:335-337
@@ +334,5 @@
+ if (mf.getRegInfo().subRegLivenessEnabled()) {
+ // Dead subregister defs have no users and therefore no dependencies,
+ // moving them around may cause liveintervals to degrade into multiple
+ // component. Change the dead subregister defs to have their own vreg.
+ LIS->renameDeadSubRegDefs();
----------------
How are multiple disjoint live segments avoided in general for non-dead sub register definitions? What if the sub register definitions initially overlap and scheduling makes them disjoint? It looks like we place a read-undef flag on subsequent definitions creating multiple "connected components" in the live range.
Repository:
rL LLVM
http://reviews.llvm.org/D14969
More information about the llvm-commits
mailing list