Re: [tip:core/rseq] rseq/selftests/x86: Work around bogus gcc-8 optimisation

From: Linus Torvalds
Date: Fri Apr 19 2019 - 14:54:17 EST


On Fri, Apr 19, 2019 at 11:46 AM tip-bot for Mathieu Desnoyers
<tipbot@xxxxxxxxx> wrote:
>
> rseq/selftests/x86: Work around bogus gcc-8 optimisation
>
> At least the following versions of gcc-8:
>
> - gcc version 8.0.1 20180414 (experimental) [trunk revision 259383] (Ubuntu 8-20180414-1ubuntu2)
> - gcc 8.2.0-7ubuntu1 (Ubuntu 18.10 (Cosmic)),
>
> generate broken assembler with asm goto that have a thread-local storage
> "m" input operand on both x86-32 and x86-64. For instance:

Is there a gcc bugzilla for this? Shouldn't that be mentioned here?

Also, we use "asm goto" together with "m" all the time in the kernel.
In fact, it's the most common case, with the RMWcc ops being generated
with that. I realize that we don't use the gcc thread-local storage
for them (we often do use our *own* thread-local storage), but it
would be good to have that gcc bugzilla to see why it can only affect
those user level "__thread" cases..

Linus