mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 10:01:39 -05:00
clang: work around asm output constraint problems
Work around clang problems with "=rm" asm constraint. clang seems to always chose the memory output, while it is almost always the worst choice. Add ASM_OUTPUT_RM so that we can replace "=rm" constraint where it matters for clang, while not penalizing gcc. Signed-off-by: Eric Dumazet <edumazet@google.com> Suggested-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
f67e8a5e3e
commit
4cc5373f2e
@@ -145,6 +145,7 @@
|
||||
*/
|
||||
#define ASM_INPUT_G "ir"
|
||||
#define ASM_INPUT_RM "r"
|
||||
#define ASM_OUTPUT_RM "=r"
|
||||
|
||||
/*
|
||||
* Declare compiler support for __typeof_unqual__() operator.
|
||||
|
||||
@@ -548,11 +548,12 @@ struct ftrace_likely_data {
|
||||
|
||||
/*
|
||||
* Clang has trouble with constraints with multiple
|
||||
* alternative behaviors (mainly "g" and "rm").
|
||||
* alternative behaviors ("g" , "rm" and "=rm").
|
||||
*/
|
||||
#ifndef ASM_INPUT_G
|
||||
#define ASM_INPUT_G "g"
|
||||
#define ASM_INPUT_RM "rm"
|
||||
#define ASM_OUTPUT_RM "=rm"
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CC_HAS_ASM_INLINE
|
||||
|
||||
Reference in New Issue
Block a user