================ @@ -145,9 +163,88 @@ namespace { .addImm(0); if (IsAIX) { - // The variable offset and region handle are copied in r4 and r3. The - // copies are followed by GETtlsADDR32AIX/GETtlsADDR64AIX. - if (!IsTLSTPRelMI) { + if (IsTLSLDAIXMI) { + // It is better to put TLSLDAIX node before LoadOffsetToc node, + // because LoadOffsetToc node can use clobbers r4/r5. Search for the + // first paired LoadOffsetToc node within the same BB. + unsigned LDTocOp = + Is64Bit ? (IsLargeModel ? PPC::LDtocL : PPC::LDtoc) + : (IsLargeModel ? PPC::LWZtocL : PPC::LWZtoc); + MachineBasicBlock::iterator Anchor = I; + if (!RegInfo.use_empty(OutReg)) { + std::set<MachineInstr *> Uses; + // Collect all instructions that use OutReg + for (MachineOperand &MO : RegInfo.use_operands(OutReg)) { + if (Uses.count(MO.getParent())) + continue; + Uses.insert(MO.getParent()); + } + // Find the first Add within current BB. ---------------- amy-kwan wrote:
```suggestion // Find the first Add within the current BB. ``` https://github.com/llvm/llvm-project/pull/66316 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits