]> asedeno.scripts.mit.edu Git - linux.git/commit
tracing: Simplify "if" macro code
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 20 Mar 2019 17:26:17 +0000 (10:26 -0700)
committerSteven Rostedt (VMware) <rostedt@goodmis.org>
Thu, 9 May 2019 19:25:13 +0000 (15:25 -0400)
commita15fd609ad53a631a927c6680e8fb606f42a712b
treef885028fcbbbc46022e69053638c88d984ef9df5
parentb9416997603ef7e17d4de10b6408f19da2feb72c
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>
include/linux/compiler.h