This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Validize an invalid mem (too large offset)


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]