[llvm] [clang] [PowerPC] Support local-dynamic TLS relocation on AIX (PR #66316)
Amy Kwan via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 1 21:01:19 PST 2024
================
@@ -3413,13 +3415,34 @@ SDValue PPCTargetLowering::LowerGlobalTLSAddressAIX(SDValue Op,
return DAG.getNode(PPCISD::ADD_TLS, dl, PtrVT, TLSReg, VariableOffset);
}
- // Only Local-Exec, Initial-Exec and General-Dynamic TLS models are currently
- // supported models. If Local- or Initial-exec are not possible or specified,
- // all GlobalTLSAddress nodes are lowered using the general-dynamic model.
- // We need to generate two TOC entries, one for the variable offset, one for
- // the region handle. The global address for the TOC entry of the region
- // handle is created with the MO_TLSGDM_FLAG flag and the global address
- // for the TOC entry of the variable offset is created with MO_TLSGD_FLAG.
+ if (Model == TLSModel::LocalDynamic) {
+ // For local-dynamic on AIX, we need to generate one TOC entry for each
+ // variable offset, and a single module-handle TOC entry for the entire
+ // file.
+
+ SDValue VariableOffsetTGA =
----------------
amy-kwan wrote:
nit: I think it is easier to follow if we group the `VariableOffsetTGA`/`VariableOffset` together, and the module handle code together.
```
SDValue VariableOffsetTGA =
DAG.getTargetGlobalAddress(GV, dl, PtrVT, 0, PPCII::MO_TLSLD_FLAG);
SDValue VariableOffset = getTOCEntry(DAG, dl, VariableOffsetTGA);
// module handle code . . .
```
https://github.com/llvm/llvm-project/pull/66316
More information about the llvm-commits
mailing list