This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: Egcs 1.1 produces incorrect ColdFire code
- To: Toon Moene <toon at moene dot indiv dot nluug dot nl>
- Subject: Re: Egcs 1.1 produces incorrect ColdFire code
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Thu, 17 Sep 1998 02:00:50 -0600
- cc: "Eric Devolder" <ra3677 at email dot sps dot mot dot com>, egcs-bugs at cygnus dot com
- Reply-To: law at cygnus dot com
In message <9809151847.AA23990@moene.indiv.nluug.nl>you write:
> > obj/gnu/board/t.s: Assembler messages:
> > obj/gnu/board/t.s:13: Error: displacement too large for
> > this architecture; needs 68020 or higher -- statement
> > `move.b %d0,43690(%a0)' ignored
>
> Unfortunately, I don't have egcs-1.1 lying around anymore, but it
> might be instructive to look into .../gcc/config/m68k/m68k.h and
> search for the "TARGET_SWITCHES"; the following is the current entry
> for the m5200 (note the turning off of MASK_68020):
>
> { "5200", - (MASK_68060|MASK_68040|MASK_68040_ONLY|MASK_68020 \
> |MASK_BITFIELD|MASK_68881)}, \
> { "5200", (MASK_5200)}, \
>
> This bit (TARGET_68020) is used further down in the m68k.h file to
> allow large offsets to address registers, so for the m5200 this bit
> should *not* be set, as above.
I do not think changing TARGET_SWITCHES is the right fix since that
will have other effects than just changing the allowable offsets.
It is probably better to fix GO_IF_LEGITIMATE_ADDRESS and friends to
test TARGET_5200 has needed.
jeff