diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2025-07-18 23:45:50 +0300 |
---|---|---|
committer | Dimitar Dimitrov <dimitar@dinux.eu> | 2025-07-19 18:11:41 +0300 |
commit | e42799be2bb2966487c27897294426a03a99f56d (patch) | |
tree | a09de33db1af03b4789974c874471fb92e8ca5fd /gcc/testsuite/rust/compile/macros/proc | |
parent | a0e28fd03f65bb4c76f8eb5ce1e5d56b76897199 (diff) | |
download | gcc-master.zip gcc-master.tar.gz gcc-master.tar.bz2 |
The ctable base address for SBCO/LBCO load/store patterns was
incorrectly stored as unsigned integer. That prevented matching
addresses with bit 31 set, because const_int RTL expression is expected
to be sign-extended.
Fix by using sign-extended 32-bit values for ctable base addresses.
PR target/121124
gcc/ChangeLog:
* config/pru/pru-pragma.cc (pru_pragma_ctable_entry): Handle the
ctable base address as signed 32-bit value, and sign-extend to
HOST_WIDE_INT.
* config/pru/pru-protos.h (struct pru_ctable_entry): Store the
ctable base address as signed.
(pru_get_ctable_exact_base_index): Pass base address as signed.
(pru_get_ctable_base_index): Ditto.
(pru_get_ctable_base_offset): Ditto.
* config/pru/pru.cc (pru_get_ctable_exact_base_index): Ditto.
(pru_get_ctable_base_index): Ditto.
(pru_get_ctable_base_offset): Ditto.
(pru_print_operand_address): Ditto.
gcc/testsuite/ChangeLog:
* gcc.target/pru/pragma-ctable_entry-2.c: New test.
Diffstat (limited to 'gcc/testsuite/rust/compile/macros/proc')
0 files changed, 0 insertions, 0 deletions