On 3/28/25 5:12 AM, Konstantinos Eleftheriou wrote:
In the case that we are eliminating the load instruction, we use zero_extend
for the initialization of the base register for the zero-offset store.
This causes issues when the store and the load use the same mode,
as we are trying to generate a zero_extend with the same inner and
outer modes.

This patch fixes the issue by zero-extending the value stored in the
base register only when the load's mode is wider than the store's mode.

        PR rtl-optimization/119160

gcc/ChangeLog:

        * avoid-store-forwarding.cc (process_store_forwarding):
        Zero-extend the value stored in the base register, in case
        of load-elimination, only when the mode of the destination
        is wider.

gcc/testsuite/ChangeLog:

        * gcc.dg/pr119160.c: New test.
OK
jeff

Reply via email to