This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Validize an invalid mem (too large offset)
- To: <gcc at gcc dot gnu dot org>
- Subject: Validize an invalid mem (too large offset)
- From: Michael Matz <matz at kde dot org>
- Date: Thu, 30 Aug 2001 10:50:19 +0200 (MET DST)
Hi,
In new-regalloc I want to output spill code. For that I naively create a
stack-slot, which gives me a fp-relative address.
I formerly then emited a
gen_move_insn for that and the appropriate source. On e.g. Sparc this can
result in addressess which have a too large offset, which later leads to
aborts in regclass(), which tries to recognize the insns. Nevertheless
gen_move_insn only produces the one (set target source) insn, and not the
correct sequence of insns, to do what I want (I don't care if it produces
new pseudos or not). Up to now I had hoped this would be done by that.
Currently I'm trying with emit_move_insn() which seems to do a more
correct thing on sparc, i.e. produces a new pseudo for the offset, fills
it, and produces a nice (set) insn with that. So, basically I'm now
asking, is that (using emit_move_insn) the correct way to simply do a copy
from a pseudo to a stack-slot? (I run under the premise, that reload is
run later, in case anything needs fixing up, but between generating those
insns, and reload, there are different other passes run.)
Ciao,
Michael.