This is the mail archive of the 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)


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.)


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