clang generates poor code for local_irq_save() callers,
because of asm "=rm" output constraint being mishandled.
Frst patch adds ASM_OUTPUT_RM macro, extending ASM_INPUT_RM
that Linus added in linux-6.10. Suggested by Uros Bizjak.
Second patch uses it in local_irq_save(), to not penalize gcc
while forcing clang to generate better code especially
when CONFIG_STACKPROTECTOR_STRONG=y.
smap_save() could also use it, but is not in any fast path.
Eric Dumazet (2):
clang: work around asm output constraint problems
x86/irqflags: Use ASM_OUTPUT_RM in native_save_fl()
arch/x86/include/asm/irqflags.h | 2 +-
include/linux/compiler-clang.h | 7 +++++++
include/linux/compiler_types.h | 6 +++++-
3 files changed, 13 insertions(+), 2 deletions(-)
--
2.52.0.322.g1dd061c0dc-goog