diff options
author | Matthias Braun <matze@braunis.de> | 2015-11-17 00:50:55 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2015-11-17 00:50:55 +0000 |
commit | fe9d6f211f0b0b4beed7abd97c9e59057477234c (patch) | |
tree | fd51e83ab8831b882e22f053732d2d837521feed /llvm/lib/CodeGen/VirtRegMap.cpp | |
parent | cdec7ee565e5bcf399537c0dc218a4fdaba5fdac (diff) | |
download | bcm5719-llvm-fe9d6f211f0b0b4beed7abd97c9e59057477234c.tar.gz bcm5719-llvm-fe9d6f211f0b0b4beed7abd97c9e59057477234c.zip |
Assume lane masks are always precise
Allowing imprecise lane masks in case of more than 32 sub register lanes
lead to some tricky corner cases, and I need another bugfix for another
one. Instead I rather declare lane masks as precise and let tablegen
abort if we do not have enough bits.
This does not affect any in-tree target, even AMDGPU only needs 16 lanes
at the moment. If the 32 lanes turn out to be a problem in the future,
then we can easily change the LaneBitmask typedef to uint64_t.
Differential Revision: http://reviews.llvm.org/D14557
llvm-svn: 253279
Diffstat (limited to 'llvm/lib/CodeGen/VirtRegMap.cpp')
-rw-r--r-- | llvm/lib/CodeGen/VirtRegMap.cpp | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/VirtRegMap.cpp b/llvm/lib/CodeGen/VirtRegMap.cpp index bf992a12d28..bf1c0dce9e5 100644 --- a/llvm/lib/CodeGen/VirtRegMap.cpp +++ b/llvm/lib/CodeGen/VirtRegMap.cpp @@ -400,14 +400,6 @@ void VirtRegRewriter::rewrite() { MO.setIsUndef(true); } else if (!MO.isDead()) { assert(MO.isDef()); - // Things get tricky when we ran out of lane mask bits and - // merged multiple lanes into the overflow bit: In this case - // our subregister liveness tracking isn't precise and we can't - // know what subregister parts are undefined, fall back to the - // implicit super-register def then. - LaneBitmask LaneMask = TRI->getSubRegIndexLaneMask(SubReg); - if (TargetRegisterInfo::isImpreciseLaneMask(LaneMask)) - SuperDefs.push_back(PhysReg); } } |