diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-05 07:50:18 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-05 07:50:18 +0000 |
| commit | b94972cb827c21374d06c73fa3b5df5e2e2b2216 (patch) | |
| tree | 93d17974712c0235c73ca0d7bf1105ffd19e8781 /llvm/lib/CodeGen | |
| parent | adbf14ab859fb0782a5667dd2c5b669a3e2b362f (diff) | |
| download | bcm5719-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/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/RegUsageInfoCollector.cpp | 8 |
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() |

