r13 isn't reserved on 32-bit AIX, which is reflected in our calling
convention but not callee saved regs.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Unit Tests
Event Timeline
Change looks good, however there is a couple things complicating this.
- The SplitCSR code is dead with Darwins removal and we didn't realize it.
- CSR_AIX64 and CSR_SVR464 are the same and should be one list, not 2 distinct lists.
Usually I would suggest we land 2 NFC patches to clean this up first, however I don't want to delay this bugfix for te removal of dead code.
If no one else objects, I would suggest:
- Condensing the SVR464 and AIX64 lists to a single list and removing the Darwin lists in an NFC patch.
- Updating this patch to: keep the fatal error you added for AnyReg calling convention, then handling isOSAIX() immediately after, with a fatal error if the calling convention is ColdCC.
That avoids changing the SplitCSR code which makes it look like its still alive for SVR4 ABIs. We can then remove SplitCSR in a follow up NFC patch.
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | ||
---|---|---|
167 | nit: unrelated format change. |
This breaks tests: http://45.33.8.238/linux/15714/step_12.txt
Please take a look and revert if it takes a while to investigate.
It broke hardcoded stack offsets in test aix-cc-byval-mem.ll, the test is fixed as of 8541a3cc9dca52933f71baa5f344a0b815638b6a. Relanding.
Minor nit: can we add an error for SplitCC on AIX as well?