summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2015-01-13 17:47:59 +0000
committerHal Finkel <hfinkel@anl.gov>2015-01-13 17:47:59 +0000
commitdf87f9383b6e13e9bdaf3fe5c6a7d914fcc7def6 (patch)
tree5fb1a2d0e32d6427989e49bda1f9e128248d1a0d /llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
parentf4a22c0d4805b0a8fa1f64e89ad6871a44c9bea4 (diff)
downloadbcm5719-llvm-df87f9383b6e13e9bdaf3fe5c6a7d914fcc7def6.tar.gz
bcm5719-llvm-df87f9383b6e13e9bdaf3fe5c6a7d914fcc7def6.zip
[StackMaps] Allow the target to pre-process the live-out mask
Some targets, PowerPC for example, have pseudo-registers (such as that used to represent the rounding mode), that don't have DWARF register numbers or a register class. These are used only for internal dependency tracking, and should not appear in the recorded live-outs. This adds a callback allowing the target to pre-process the live-out mask in order to remove these kinds of registers so that the StackMaps code does not complain about them and/or attempt to include them in the output. This will be used by the PowerPC target in a future commit. llvm-svn: 225805
Diffstat (limited to 'llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp')
-rw-r--r--llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp b/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
index c2ee87a3de8..767f43a420f 100644
--- a/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
+++ b/llvm/lib/CodeGen/StackMapLivenessAnalysis.cpp
@@ -123,5 +123,7 @@ uint32_t *StackMapLiveness::createRegisterMask() const {
for (LivePhysRegs::const_iterator RI = LiveRegs.begin(), RE = LiveRegs.end();
RI != RE; ++RI)
Mask[*RI / 32] |= 1U << (*RI % 32);
+
+ TRI->adjustStackMapLiveOutMask(Mask);
return Mask;
}
OpenPOWER on IntegriCloud