Re: [PATCH 02/25] tracing: Improve "if" macro code generation
From: Steven Rostedt
Date: Thu May 09 2019 - 14:30:20 EST
On Thu, 9 May 2019 09:51:59 -0700
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, May 9, 2019 at 6:01 AM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> > This patch works. Can I get your Signed-off-by for it?
> Yes. Please write some kind of comprehensible commit log for it, but
"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.
Reported-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Reported-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx>
> Signed-off-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
> for the patch itself.