Tested on hppa-unknown-linux-gnu and hppa64-hp-hpux11.11. Fixes testcase in PR. Committed to trunk.
Dave --- hppa: Fix integer REG+D address reloads I made a mistake in the previous change to integer_store_memory_operand. There is no support pa_emit_move sequence to handle secondary reloads of integer REG+D instructions. Further, the Q constraint is used for some non-simple instructions (movb and addib). Thus, we need to return true when reload is in progress. 2023-11-22 John David Anglin <dang...@gcc.gnu.org> gcc/ChangeLog: PR target/112617 * config/pa/predicates.md (integer_store_memory_operand): Return true for REG+D addresses when reload_in_progress is true. diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index 1b50020e1de..4c07c0a3828 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -308,6 +308,13 @@ if (reg_plus_base_memory_operand (op, mode)) { + /* There is no support for handling secondary reloads of integer + REG+D instructions in pa_emit_move_sequence. Further, the Q + constraint is used in more than simple move instructions. So, + we must return true and let reload handle the reload. */ + if (reload_in_progress) + return true; + /* Extract CONST_INT operand. */ if (GET_CODE (op) == SUBREG) op = SUBREG_REG (op);
signature.asc
Description: PGP signature