compiler.h: Fix annotation macro misplacement with Clang
authorJosh Poimboeuf <jpoimboe@redhat.com>
Mon, 8 Nov 2021 22:35:59 +0000 (14:35 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Dec 2021 11:28:49 +0000 (12:28 +0100)
commit50f27a29d75851d78cc53fdfd4d72d775c62a418
treea2bc0c0c3294e6682cf742819014230ce46600b0
parent0cd3ef80100459b74cb84b0c7aab586702512fdf
compiler.h: Fix annotation macro misplacement with Clang

[ Upstream commit dcce50e6cc4d86a63dc0a9a6ee7d4f948ccd53a1 ]

When building with Clang and CONFIG_TRACE_BRANCH_PROFILING, there are a
lot of unreachable warnings, like:

  arch/x86/kernel/traps.o: warning: objtool: handle_xfd_event()+0x134: unreachable instruction

Without an input to the inline asm, 'volatile' is ignored for some
reason and Clang feels free to move the reachable() annotation away from
its intended location.

Fix that by re-adding the counter value to the inputs.

Fixes: f1069a8756b9 ("compiler.h: Avoid using inline asm operand modifiers")
Fixes: c199f64ff93c ("instrumentation.h: Avoid using inline asm operand modifiers")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/0417e96909b97a406323409210de7bf13df0b170.1636410380.git.jpoimboe@redhat.com
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: x86@kernel.org
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Miroslav Benes <mbenes@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/linux/compiler.h
include/linux/instrumentation.h