R600/SI: Fix live range error hidden by SIFoldOperands
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 3 Dec 2014 05:22:29 +0000 (05:22 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Wed, 3 Dec 2014 05:22:29 +0000 (05:22 +0000)
commit0d2832ae8db46557f2a19c9964a39a5c848c46aa
treed79e3dbad71deb8d68686b75f9e18c86271a9123
parent78116d7acec6e5e8c51dbbf8bf4cb511afdf634c
R600/SI: Fix live range error hidden by SIFoldOperands

m0 is treated as a virtual register class with a single register
rather than the physical register it really is. This was updating
the live range of the used virtual copy of m0 from the first ds_read
instruction, and leaving the unused copy unchanged. This resulted in a
"Live segment doesn't end at a valid instruction" verifier error because
the erased instructions. Update the live range of the second copy (which
should be dead).

No test since I'm not sure how to trigger this with SIFoldOperands
enabled.

llvm-svn: 223203
llvm/lib/Target/R600/SILoadStoreOptimizer.cpp