[PATCH] D37467: Add a new pass to speculate around PHI nodes with constant (integer) operands when profitable.

Philip Reames via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 2 14:12:26 PST 2018

reames added a comment.

Catching up on old review traffic.  Nothing critical.

Comment at: llvm/trunk/include/llvm/Transforms/Scalar/SpeculateAroundPHIs.h:84
+///   ```
+///     testq %eax, %eax
+///     addl $7, %edi
Isn't this snippet wrong?  It looks like we're adding 7 or 18 here, not 7 or 11.  I think you're missing a conditional branch.  Alternatively, you could make the second add be an "addli $4, edi" (since 4+7 == 11)

If we don't do that later transformation, maybe we should be.  Extracting out the common component of the two constants adding that unconditionally and then conditionally adding the difference seems like a near ideal lowering here.  We'd end up with something like:
///     testq %eax, %eax
///     addl $7, %edi
///     jne .L
///     addl $4, %edi <-- different constant
///   .L:
///     movl %edi, %eax
///     retq



More information about the llvm-commits mailing list