Messages in this thread | | | From | Miguel Ojeda <> | Date | Sun, 9 Sep 2018 17:16:48 +0200 | Subject | Re: [PATCH] include/linux/compiler*.h: add version detection to asm_volatile_goto |
| |
Hi Nick,
On Sat, Sep 8, 2018 at 12:21 AM, Nick Desaulniers <ndesaulniers@google.com> wrote: > The comment above asm_volatile_goto mentions working around a GCC bug, > and links to a bug report that claims this has been fixed in newer > versions of GCC. Testing shows that this was resolved in GCC 4.8.2. > asm_volatile_goto should also be defined for other compilers that > support asm goto. > > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> > --- > include/linux/compiler-gcc.h | 7 ++++++- > include/linux/compiler_types.h | 4 ++++ > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h > index 763bbad1e258..149f411b4366 100644 > --- a/include/linux/compiler-gcc.h > +++ b/include/linux/compiler-gcc.h > @@ -171,7 +171,7 @@ > #endif > > /* > - * GCC 'asm goto' miscompiles certain code sequences: > + * GCC < 4.8.2 'asm goto' miscompiles certain code sequences: > *
Nice catch. Indeed, it seems broken since 4.5.3 and fixed in every version after 4.8.1 (at least the ones in godbolt).
Reviewed-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
By the way, arch/arm64/include/asm/jump_label.h is the only place in the kernel using "asm goto" directly (e.g. the arm64 one isn't). Even if old gcc doesn't trigger the bug in that case, we should use the same everywhere for consistency, unless there is a special reason not to (not documented). I will send a patch.
Cheers, Miguel
| |