https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83758
--- Comment #29 from acsawdey at gcc dot gnu.org --- The problematic expression was: (mem/c:QI (plus:DI (plus:DI (reg/f:DI 187) (const_int 32 [0x20])) (const_int 72 [0x48])) and internal_arg_pointer was (plus:DI (reg/f:DI 187) (const_int 32 [0x20])) ... just not the same rtx object in both places. It seems like the +32 is FIRST_PARM_OFFSET for ppc64le. 187 is in fact just a copy of the stack pointer (r12). It seems like there is something that decomposed the whole offset of 104, which is seen elsewhere after expand into 32+72. If I understand correctly, you are saying that if the rtx with splitstack on was just reg+104, we would not recognize that because we are looking for this particular reg+32 pattern?