https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881
--- Comment #31 from Julian Waters <tanksherman27 at gmail dot com> --- (In reply to Eric Botcazou from comment #30) > AFAICT the last missing piece is the configure check for the linker. It's a bit of a shame I couldn't figure out how to make the zero extend approach work correctly. That aside, I'm concerned that this patch still isn't correct, because it doesn't seem to be using the parallel rtx correctly. From what I can gather parallel is meant for multiple operations to run at the same time, which crucially means results from one operation cannot be assumed to be available for the next operation inside a parallel, which is exactly what this patch is doing, since it's using the results from the first 2 instructions to calculate the base thread pointer. I've tried to do this the "correct" way by splitting the part of the thread pointer load that can be done in parallel into one insn (In particular trying to use UNSPEC_PCREL) and the actual calculation of the base pointer into another, but both insns are not recognized by gcc. I don't know how to circumvent this issue at the moment