LiveIntervalAnalysis: Support moving of subregister defs in handleMove
authorMatthias Braun <matze@braunis.de>
Mon, 15 Feb 2016 19:25:36 +0000 (19:25 +0000)
committerMatthias Braun <matze@braunis.de>
Mon, 15 Feb 2016 19:25:36 +0000 (19:25 +0000)
commit4a6c728cc084c780b49482c973bb99205c09d6e0
treebd8c90930e9310b8da1363dd4ee7096b7a1483c5
parenta448f197a982a1315cd1328abc63dce8a92dc059
LiveIntervalAnalysis: Support moving of subregister defs in handleMove

This is an updated version which fixes a bug that happened with
uses tied to an earlyclobber operand which end at an unusual slotindex.

If two definitions write to independent subregisters then they can be
put in any order. LiveIntervalAnalysis::handleMove() did not support
this previously because it looks like moving a definition of a vreg past
another one.

This is a modified version of a patch proposed (two years ago) by
Vincent Lejeune! This version does not touch the read-undef flags and is
extended for the case of moving a subregister def behind all uses - this
can happen for subregister defs that are completely unused.

Differential Revision: http://reviews.llvm.org/D9067

llvm-svn: 260906
llvm/lib/CodeGen/LiveIntervalAnalysis.cpp