Entry functions represent the end of unwinding, as they are the
outer-most frame. This implies they can only have a meaningful
definition for the CFA, which AMDGPU defines using a memory location
description with a literal private address space address. The return
address is set to undefined as a sentinel value to signal the end of
unwinding.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | ||
---|---|---|
394 | Why two levels of casting in all of these places? I also really don't like the constructor form of casts | |
1074–1085 | I don't think this function buys you much since all of these thing are already in scope at the use. | |
llvm/lib/Target/AMDGPU/SIFrameLowering.h | ||
78 | Star with lowercase |
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | ||
---|---|---|
394 | Sorry, this is me copy-pasting from the only other use of createEscape in the code base and not thinking about it more. I'll clean all these up. | |
1074–1085 | It is more just to cut down on the noise from having to get a CFI index and mark the instruction as FrameSetup. I'm OK inlining it everywhere, but things go from: BuildCFI(MBB, I, DL, MCCFIInstruction::createUndefined( nullptr, MCRI->getDwarfRegNum(AMDGPU::PC_REG, false))); to BuildCFI(MBB, I, DL, TII->get(TargetOpcode::CFI_INSTRUCTION)) .addCFIIndex(MF.addFrameInst(MCCFIInstruction::createUndefined( nullptr, MCRI->getDwarfRegNum(AMDGPU::PC_REG, false)))) .setMIFlag(MachineInstr::FrameSetup); | |
llvm/lib/Target/AMDGPU/SIFrameLowering.h | ||
78 | I was trying to mimic BuildMI, which still has the wrong casing, but I'll update all of these. |
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | ||
---|---|---|
1080 | Missing MIR test checking relevant CFI_INSTRUCTIONs ? |
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | ||
---|---|---|
1074 | Needs a commnent explaining what this does. |
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | ||
---|---|---|
1081 | Should just pass in TII |
Abandoned in favor of D147279 which avoids using most/all of the remaining user opcode
Star with lowercase