mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 23:23:38 -04:00
IPRA: Don't crash on null getCallPreservedMask
Kernels aren't callable, so they don't have a call preserved mask. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310172 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
; RUN: llc -mtriple=amdgcn-amd-amdhsa -verify-machineinstrs -enable-ipra < %s | FileCheck -check-prefix=GCN %s
|
||||
|
||||
; Kernels are not called, so there is no call preserved mask.
|
||||
; GCN-LABEL: {{^}}kernel:
|
||||
; GCN: flat_store_dword
|
||||
define amdgpu_kernel void @kernel(i32 addrspace(1)* %out) #0 {
|
||||
entry:
|
||||
store i32 0, i32 addrspace(1)* %out
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
Reference in New Issue
Block a user