[PATCH] D97039: [PowerPC] Enable redundant TOC save removal on AIX
Hubert Tong via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 22 11:06:55 PST 2021
hubert.reinterpretcast added inline comments.
================
Comment at: llvm/lib/Target/PowerPC/PPCMIPeephole.cpp:229
assert(TII->isTOCSaveMI(*MI) && "Expecting a TOC save instruction here");
- assert(MF->getSubtarget<PPCSubtarget>().isELFv2ABI() &&
- "TOC-save removal only supported on ELFv2");
- PPCFunctionInfo *FI = MF->getInfo<PPCFunctionInfo>();
-
- MachineBasicBlock *Entry = &MF->front();
- uint64_t CurrBlockFreq = MBFI->getBlockFreq(MI->getParent()).getFrequency();
-
- // If the block in which the TOC save resides is in a block that
- // post-dominates Entry, or a block that is hotter than entry (keep in mind
- // that early MachineLICM has already run so the TOC save won't be hoisted)
- // we can just do the save in the prologue.
- if (CurrBlockFreq > EntryFreq || MPDT->dominates(MI->getParent(), Entry))
- FI->setMustSaveTOC(true);
-
- // If we are saving the TOC in the prologue, all the TOC saves can be removed
- // from the code.
- if (FI->mustSaveTOC()) {
- for (auto &TOCSave : TOCSaves)
- TOCSave.second = false;
- // Add new instruction to map.
- TOCSaves[MI] = false;
- return;
+ // TOC save in prologue is only supported on ELFv2 ABI.
+ if (MF->getSubtarget<PPCSubtarget>().isELFv2ABI()) {
----------------
I think this is not actually not a fundamental limitation of the ABI itself? Can we make the comment more clear that "TOC save in prologue" is merely a strategy that hasn't been implemented for the AIX ABI code in LLVM?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D97039/new/
https://reviews.llvm.org/D97039
More information about the llvm-commits
mailing list