http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46179
--- Comment #2 from Maxim Kuvyrkov <mkuvyrkov at gcc dot gnu.org> 2010-10-26 22:14:02 UTC --- Just to check that this is not a lingering issue from backporting, do you have the following comment in gcc/config/m68k/m68k.c ? I fixed a very similar issue before checking the final GCC TLS patch. /* Combine and, possibly, other optimizations may do good job converting (const (unspec [(symbol)])) into (const (plus (unspec [(symbol)]) (const_int N))). The problem with this is emitting @TLS or @GOT decorations. The decoration is emitted when processing (unspec), so the result would be "#sym...@tlsle+n" instead of "#symbo...@tlsle". It seems that the easiest solution to this is to convert such operands to (const (unspec [(plus (symbol) (const_int N))])). Note, that the top level of operand remains intact, so we don't have to patch up anything outside of the operand. */