diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-20 18:26:17 +0100 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2019-05-09 21:25:13 +0200 |
commit | a15fd609ad53a631a927c6680e8fb606f42a712b (patch) | |
tree | f885028fcbbbc46022e69053638c88d984ef9df5 /arch/x86/kernel/ftrace_32.S | |
parent | tracing: Fix documentation about disabling options using trace_options (diff) | |
download | linux-a15fd609ad53a631a927c6680e8fb606f42a712b.tar.xz linux-a15fd609ad53a631a927c6680e8fb606f42a712b.zip |
tracing: Simplify "if" macro code
Peter Zijlstra noticed that with CONFIG_PROFILE_ALL_BRANCHES, the "if"
macro converts the conditional to an array index. This can cause GCC
to create horrible code. When there are nested ifs, the generated code
uses register values to encode branching decisions.
Josh Poimboeuf found that replacing the define "if" macro from using
the condition as an array index and incrementing the branch statics
with an if statement itself, reduced the asm complexity and shrinks the
generated code quite a bit.
But this can be simplified even further by replacing the internal if
statement with a ternary operator.
Link: https://lkml.kernel.org/r/20190307174802.46fmpysxyo35hh43@treble
Link: http://lkml.kernel.org/r/CAHk-=wiALN3jRuzARpwThN62iKd476Xj-uom+YnLZ4=eqcz7xQ@mail.gmail.com
Reported-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reported-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'arch/x86/kernel/ftrace_32.S')
0 files changed, 0 insertions, 0 deletions