This is the mail archive of the
mailing list for the GCC project.
Re: Incorrect code using gcc 2.8.x for Motorola 5200 Coldfire
- To: Jeffrey A Law <law at cygnus dot com>
- Subject: Re: Incorrect code using gcc 2.8.x for Motorola 5200 Coldfire
- From: Russ Fellows <rfellows at intellistor dot com>
- Date: Thu, 03 Sep 1998 10:21:53 -0600
- CC: Richard Henderson <rth at cygnus dot com>, egcs-patches at cygnus dot com, John Vickers <jvickers at acorn dot com>
- Organization: FCPA/Intellistor
- References: <firstname.lastname@example.org>
Jeffrey A Law wrote:
> In message <35EB1E68.19E3FCDD@intellistor.com>you write:
> > Correct. I didn't state that clearly enough. Upon reading the
> > 68020, 68030, 68040, 5202, 5206 and 5307 programmers references;
> > it appears that a "movea.w" is not allowed on any of these
> > processors (i.e. a byte move into or out of an address register).
> Err, "movea.w" != byte.
Yes, my mistake. I meant "movea.b", which does = byte. A "movea.w"
is allowed, on all 68k and 5X architectures.
> I spent a little more time looking at the code, and for other m68k
> variants we only disallow QImode loads/stores to/from address registers.
> For a byte copy we'll actually generate a word sized copy. So, does
> the 5307 allow mov.w #<immedaite>,aX or mov.w reg0,reg1 where
> reg0 and/or reg1 are address registers?
> If so, then the better solution is easy. We fix the constraints to disallow
> QImode load/stores to/from address regs and tweak output_movve_qimode
> to use the ".w" extension instead of hte ".b" extension for something
> which references an address reg.
This sounds good.
> [ I say better since we would still allow QImode values to be
> allocated to address regs, which has advantages for register
> allocation. ]