summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-05 07:50:18 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-05 07:50:18 +0000
commitb94972cb827c21374d06c73fa3b5df5e2e2b2216 (patch)
tree93d17974712c0235c73ca0d7bf1105ffd19e8781 /llvm/lib
parentadbf14ab859fb0782a5667dd2c5b669a3e2b362f (diff)
downloadbcm5719-llvm-b94972cb827c21374d06c73fa3b5df5e2e2b2216.tar.gz
bcm5719-llvm-b94972cb827c21374d06c73fa3b5df5e2e2b2216.zip
IPRA: Don't crash on null getCallPreservedMask
Kernels aren't callable, so they don't have a call preserved mask. llvm-svn: 310172
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/CodeGen/RegUsageInfoCollector.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/RegUsageInfoCollector.cpp b/llvm/lib/CodeGen/RegUsageInfoCollector.cpp
index 855aa37ff3c..214c6d2c820 100644
--- a/llvm/lib/CodeGen/RegUsageInfoCollector.cpp
+++ b/llvm/lib/CodeGen/RegUsageInfoCollector.cpp
@@ -128,9 +128,11 @@ bool RegUsageInfoCollector::runOnMachineFunction(MachineFunction &MF) {
if (!TargetFrameLowering::isSafeForNoCSROpt(F)) {
const uint32_t *CallPreservedMask =
TRI->getCallPreservedMask(MF, F->getCallingConv());
- // Set callee saved register as preserved.
- for (unsigned i = 0; i < RegMaskSize; ++i)
- RegMask[i] = RegMask[i] | CallPreservedMask[i];
+ if (CallPreservedMask) {
+ // Set callee saved register as preserved.
+ for (unsigned i = 0; i < RegMaskSize; ++i)
+ RegMask[i] = RegMask[i] | CallPreservedMask[i];
+ }
} else {
++NumCSROpt;
DEBUG(dbgs() << MF.getName()
OpenPOWER on IntegriCloud