[clang] [llvm] [PowerPC] Support local-dynamic TLS relocation on AIX (PR #66316)

Amy Kwan via cfe-commits cfe-commits at lists.llvm.org
Mon Feb 26 14:21:19 PST 2024


================
@@ -145,9 +164,96 @@ 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) {
+            // The relative order between the LoadOffset at toc node (for the
+            // variable offset), and the .__tls_get_mod node is being tuned
+            // here. It is better to put the LoadOffset at toc node after the call,
+            // since the LoadOffset at toc node can use clobbers r4/r5. Search for
+            // the pattern of two Load at toc nodes (either for the variable offset
+            // or for the module handle), and then move the LoadOffset at toc node
+            // right before the node that uses the OutReg of the .__tls_get_mod
+            // node.
----------------
amy-kwan wrote:

```suggestion
            // The relative order between the node that loads the variable offset
            // from the TOC, and the .__tls_get_mod node is being tuned here.
            // It is better to put the variable offset TOC load after the call,
            // since this node can use clobbers r4/r5.
            // Search for the pattern of the two nodes that load from the TOC
            // (either for the variable offset or for the module handle), and then
            // move the variable offset TOC load right before the node that uses the
            // OutReg of the .__tls_get_mod node.
```

https://github.com/llvm/llvm-project/pull/66316


More information about the cfe-commits mailing list