OSDN Git Service

compiler.h: Fix annotation macro misplacement with Clang
authorJosh Poimboeuf <jpoimboe@redhat.com>
Mon, 8 Nov 2021 22:35:59 +0000 (14:35 -0800)
committerJosh Poimboeuf <jpoimboe@redhat.com>
Tue, 21 Dec 2021 23:09:46 +0000 (15:09 -0800)
commitdcce50e6cc4d86a63dc0a9a6ee7d4f948ccd53a1
tree924ef38b1c608d28308f4684364482009d39409a
parentcb8747b7d2a9e3d687a19a007575071d4b71cd05
compiler.h: Fix annotation macro misplacement with Clang

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>
include/linux/compiler.h
include/linux/instrumentation.h