This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Incorrect code using gcc 2.8.x for Motorola 5200 Coldfire
- To: Russ Fellows <rfellows at intellistor dot com>
- Subject: Re: Incorrect code using gcc 2.8.x for Motorola 5200 Coldfire
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Wed, 02 Sep 1998 21:53:05 -0600
- cc: Richard Henderson <rth at cygnus dot com>, egcs-patches at cygnus dot com
- Reply-To: law at cygnus dot com
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.
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.
[ I say better since we would still allow QImode values to be
allocated to address regs, which has advantages for register
allocation. ]
jeff