On 12/19/25 1:18 PM, Alexandre Oliva wrote:
On Dec 19, 2025, Vladimir Makarov <[email protected]> wrote:
On 12/19/25 11:06 AM, Jakub Jelinek wrote:
On Fri, Dec 19, 2025 at 04:33:04PM +0100, Tobias Burnus wrote:
Vladimir Makarov wrote:
So the patch has sense. You can commit it into the trunk. Thank you
for the patch, Alex.
This patch unfortunately breaks GCN bootstrap,
cf. https://gcc.gnu.org/PR123223
x86_64 and i686-linux bootstrap as well, all with
--enable-checking=yes,rtl,extra
REGNO is used multiple times in the patch without making sure
it is applied on REG_P only.
Sorry for the troubles. I'll fix it as soon as possible or revert
Alex's patch if I can not do it today.
Ugh, sorry, it looks like this patch wasn't quite as baked as I believed :-(
The following patchlet should fix that. I'm giving it a spin and then
I'll push it as obvious.
It happens, Alex My mistake too as I checked mostly the patch idea not
details.
I've just committed analogous patch.
So please don't border about working on this issue.
diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc
index 910f3fba8f478..6cf6e40a09a99 100644
--- a/gcc/lra-constraints.cc
+++ b/gcc/lra-constraints.cc
@@ -1244,8 +1244,10 @@ match_reload (signed char out, signed char *ins, signed
char *outs,
/* See a comment for the input operand above. */
narrow_reload_pseudo_class (out_rtx, goal_class);
if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX
- && !ira_former_scratch_p (REGNO (SUBREG_P (out_rtx)
- ? SUBREG_REG (out_rtx) : out_rtx)))
+ && !((REG_P (out_rtx)
+ || (SUBREG_P (out_rtx) && REG_P (SUBREG_REG (out_rtx))))
+ && ira_former_scratch_p (REGNO (SUBREG_P (out_rtx)
+ ? SUBREG_REG (out_rtx) : out_rtx))))
{
reg = SUBREG_P (out_rtx) ? SUBREG_REG (out_rtx) : out_rtx;
start_sequence ();
@@ -4861,7 +4863,7 @@ curr_insn_transform (bool check_only_p)
&& find_reg_note (curr_insn, REG_UNUSED, old) == NULL_RTX
/* OLD can be an equivalent constant here. */
&& !CONSTANT_P (old)
- && !ira_former_scratch_p (REGNO (old)))
+ && !(REG_P (old) && ira_former_scratch_p (REGNO (old))))
{
start_sequence ();
lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg);