https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80881
--- Comment #32 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > 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. No worries, it's the standard way of requesting a scratch register, and nothing will try to use the result of a CLOBBER on it. That being said, we could indeed try and split the instructions for better scheduling, although the TLS pattern for the Sun linker is multi-insn too, see tls_initial_exec_64_sun. I'm attaching a minor update which uses named insns to simplify the code.