aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir N. Makarov <vmakarov@redhat.com>2023-08-14 16:06:27 -0400
committerVladimir N. Makarov <vmakarov@redhat.com>2023-08-14 16:14:22 -0400
commit882ee2ca4d313ebeb40aee53186beb670e1f4573 (patch)
tree6ca6278def5cb54ed900264daabaaa3a7cf9a1b1
parent3d2893989ade725c051a434bc6ea7b4d00764cbe (diff)
downloadgcc-882ee2ca4d313ebeb40aee53186beb670e1f4573.zip
gcc-882ee2ca4d313ebeb40aee53186beb670e1f4573.tar.gz
gcc-882ee2ca4d313ebeb40aee53186beb670e1f4573.tar.bz2
[LRA]: Process output stack pointer reloads before emitting reload insns
Previous patch setting up asserts for processing stack pointer reloads caught an error in code moving sp offset. This resulted in failure of building aarch64 port. The code wrongly processed insns beyond the output reloads of the current insn. This patch fixes it. gcc/ChangeLog: * lra-constraints.cc (curr_insn_transform): Process output stack pointer reloads before emitting reload insns.
-rw-r--r--gcc/lra-constraints.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/lra-constraints.cc b/gcc/lra-constraints.cc
index 8d9443a..c718bed 100644
--- a/gcc/lra-constraints.cc
+++ b/gcc/lra-constraints.cc
@@ -4840,7 +4840,6 @@ curr_insn_transform (bool check_only_p)
/* Most probably there are no enough registers to satisfy asm insn: */
lra_asm_insn_error (curr_insn);
}
- lra_process_new_insns (curr_insn, before, after, "Inserting insn reload");
if (goal_alt_out_sp_reload_p)
{
/* We have an output stack pointer reload -- update sp offset: */
@@ -4863,6 +4862,7 @@ curr_insn_transform (bool check_only_p)
}
lra_assert (done_p);
}
+ lra_process_new_insns (curr_insn, before, after, "Inserting insn reload");
return change_p;
}