This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: alpha himode reload problem
- To: Richard Henderson <rth at cygnus dot com>
- Subject: Re: alpha himode reload problem
- From: Jim Wilson <wilson at cygnus dot com>
- Date: Mon, 27 Oct 1997 20:24:30 -0800
- cc: egcs at cygnus dot com, gcc2 at cygnus dot com
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