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

Felix via cfe-commits cfe-commits at lists.llvm.org
Sun Sep 24 19:08:01 PDT 2023


orcguru wrote:

> For below case:
> 
> ```
> __thread extern  int x = 42;
> __thread extern int y = 42;
> int main(void) {
>    return x + y;
> }
> ```
> 
> For now, we get:
> 
> ```
> .main:
> # %bb.0:                                # %entry
>         mflr 0
>         stwu 1, -32(1)
>         stw 0, 40(1)
>         lwz 6, L..C0(2)                         # target-flags(ppc-tlsld) @x
>         lwz 7, L..C1(2)                         # target-flags(ppc-tlsld) @y
>         lwz 3, L..C2(2)                         # target-flags(ppc-tlsld) &"_$TLSML[TC]"
>         bla .__tls_get_mod[PR]
>         add 3, 3, 6
>         lwz 6, 0(3)
>         lwz 3, L..C2(2)                         # target-flags(ppc-tlsld) &"_$TLSML[TC]"
>         bla .__tls_get_mod[PR]
>         add 3, 3, 7
>         lwz 3, 0(3)
>         add 3, 3, 6
>         addi 1, 1, 32
>         lwz 0, 8(1)
>         mtlr 0
>         blr
> ```
> 
> I think we should be able to save one `__tls_get_mod()`?
> 
> If this is not easy to optimize now, I'm OK we do this optimization later.

I think this has been addressed in [c5779c1](https://github.com/llvm/llvm-project/pull/66316/commits/c5779c1142936db45c1d0e2046ee5015a7d02fe9). TLSLDAIX nodes no longer have any parameter, they look the same to machine-cse, and so should be able to be eliminated now.

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


More information about the cfe-commits mailing list