Patch for mips offs > 16bit, *kludge* for egcs-1.1.2 release
Jeffrey A Law
law@hurl.cygnus.com
Mon Mar 1 23:53:00 GMT 1999
In message <Pine.BSF.4.02A.9902281008210.23099-100000@dair.pair.com>you write
> I took a shot at this, even though I know diddley about mips
> (not really necessary when you have the GCC machine description,
> and has ignorance ever stopped anybody anyway? 1/2 :-)
Look at this as a chance to learn :-)
> In this case it is an address, a (plus ...)-expression. This
> is not valid input to emit_move_insn, (which passes it on to
> gen_movsi, or gen_movdi for 64-bit targets, without checking or
> correcting for predicates).
> Much later, it fails to be recognized -- unless optimizing, in
> which case combine will do tricks and reshape the operands so it
> will be recognized.
Seems to me this should have been caught before passing the (plus ...) to
emit_move_insn.
It may be the case that GO_IF_LEGITIMATE_ADDRESS on the mips should stop
accepting these large offsets. In fact, accepting them when they're not
really valid on the target hardware is probably actually causing us to
generate suboptimal code.
Most other ports expose the true offsets allowed in a load/store instrution;
and by doing so, the right things should happen automatically.
jeff
More information about the Gcc-patches
mailing list