[clang] [llvm] [InstCombine] Reassociate nested add/sub with constant (PR #191022)

Nikita Popov via cfe-commits cfe-commits at lists.llvm.org
Thu Apr 9 12:38:10 PDT 2026


================
@@ -1523,6 +1523,34 @@ static Instruction *foldBoxMultiply(BinaryOperator &I) {
   return nullptr;
 }
 
+/// Canonicalize a nested add/sub with a constant on the inner RHS by
+/// sinking the constant to the outer RHS.
+/// (X +/- C) +/- Y  ->  (X +/- Y) +/- C
----------------
nikic wrote:

LICM should undo this if profitable, see hoistSubAddAssociation() etc.

I'm more concerned that this is reassociating in the reverse direction of the Reassociate pass, which will push constants towards the root, rather than the leaves.

https://github.com/llvm/llvm-project/pull/191022


More information about the cfe-commits mailing list