Issue 152165
Summary aarch64: Failure to handle PSTATE.SM & ZA for tlsdesc calls
Labels new issue
Assignees
Reporter pinskia
    Turns out LLVM has the same issue as GCC here (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121415).
For:
```
extern __thread int x;
int f() __arm_streaming_compatible { return x; }
```
compiled with -O2 -fPIC, we get:
```
f(): // @f()
        .cfi_startproc
// %bb.0:
        stp     x29, x30, [sp, #-16]!           // 16-byte Folded Spill
        .cfi_def_cfa_offset 16
        mov     x29, sp
        .cfi_def_cfa w29, 16
 .cfi_offset w30, -8
        .cfi_offset w29, -16
        adrp    x0, :tlsdesc:x
        ldr     x1, [x0, :tlsdesc_lo12:x]
        add     x0, x0, :tlsdesc_lo12:x
        .tlsdesccall x
        blr     x1
        mrs x8, TPIDR_EL0
        ldr     w0, [x8, x0]
        .cfi_def_cfa wsp, 16
        ldp     x29, x30, [sp], #16             // 16-byte Folded Reload
        .cfi_def_cfa_offset 0
        .cfi_restore w30
 .cfi_restore w29
        ret
```
which fails to force non-streaming mode around the call.  A function with ZA or ZT0 state would also need to handle that.

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to