This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: reload and asms
- From: Jim Wilson <wilson at specifixinc dot com>
- To: Nathan Sidwell <nathan at codesourcery dot com>
- Cc: gcc at gcc dot gnu dot org
- Date: Sun, 06 Jun 2004 22:08:09 -0700
- Subject: Re: reload and asms
- References: <40BE48EB.6040809@codesourcery.com>
Nathan Sidwell wrote:
It is generating false positives, because at this point the source operands
of the P insns are still pseudos, hence constrain_operands (1), fails,
If you look at recog.c, you will see that there is special code to
accept psuedos during reload. That is so that this piece of code will
work. If your target has special constraint letters, it is possible
that these letters aren't accepting pseudos during reload as they should.
See also EXTRA_MEMORY_CONSTRAINT and EXTRA_ADDRESS_CONSTRAINT.
This code incidentally was added by Kenner on May 27, 1992.
even though things will all work out ok. A second problem is that
extract_insn makes the insn memoized, so merely removing the
constrain_operands call makes us fall over later, should the move's source
operand be a stack slot for instance, because we'd have remembered it
as a reg-reg move.
mov insns are special. You can't have two different patterns that match
a movsi pattern for instance. You must have only one that handles all
cases. Reload will not work otherwise. It relies on this principle in
order to work.
Removing this block of code has not caused any problems, but I'm
at a loss to understand what legitimate cases it would detect. Anybody
want to clue me in?
The purpose of the code is to emit better error messages when the user
has an invalid asm. Without this code, some users will get an ICE
instead of an error telling them that they have a buggy asm statement.
You won't notice this unless you try compiling some buggy asm statements.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com