From a89224f819381b77657145fdd8b1d997b989fdc0 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Wed, 22 Nov 2023 19:47:34 +0000 Subject: [PATCH] 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 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. --- gcc/config/pa/predicates.md | 7 +++++++ 1 file changed, 7 insertions(+) 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); -- 2.11.4.GIT