alpha himode reload problem

Jim Wilson wilson@cygnus.com
Mon Oct 27 20:25:00 GMT 1997


	Comments on the following?  The recog.c changes were necesary to 
	get combine not to undo our hard work in stmt.c.

It is annoying that combine undoes the work that the mov*i patterns did.
Since we are already using general_operand (via check_asm_operands) perhaps
the right fix is to somehow make general_operand reject the QImode/HImode MEMs
that aren't supported on some alphas?  This may even make the stmt.c changes
unnecessary if it is actually workable.  This would make it impossible to
make a QImode/HImode MEM match a "m" constraint in an asm though, so this
might not be an acceptable solution.

Otherwise, I think you need to be more conservative in the handling of the
extra constraints.  They might be accepting registers, or they might be
accepting memory, or they might be accepting constants.  There is no way to
know.  If the operand does happen to be OK for the constraint, then we don't
want to do anything that will upset what the user intended.  Hence, we must
make the most conservative assumption.  For allow_mem, this means setting
it by default.  Of course, this means that the handling of extra constraints
is still broken, but it is perhaps not worth trying to fix this.

I didn't mention it the first time, but because extended asms are so closely
tied to gcc internals, sometimes it isn't possible to handle all possible
cases, and there is no choice but to ask the user to rewrite their asm.

Jim



More information about the Gcc mailing list