This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: reload and asms


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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]