> Date: Sun, 13 Apr 2008 16:18:04 +0530
> From: "Mohamed Shafi" <[EMAIL PROTECTED]>

> I am glad that the mistake has been rectified. But it would be of
> great help requirement of the '+' constraint for strict_low_part is
> mentioned somewhere in the gcc internals. Even though the mailing list
> helped me to solve  the problem , i could have saved some time had it
> been documented.

It's not a requirement of strict_low_part per se, but for it
being an operator that keeps the rest of the register
unmodified, therefore an input to the insn.  As Bernd mentioned,
it was when operand 0 was not *otherwise* marked as an input in
the constraints (by use of effectively "%0"), that it had to be
marked with "+".  There's at least one other RTL operator that
is also keeping the rest of the register unmodified:
zero_extract.  Once you understand that (which you have to),
IMHO the existing:

@table @samp
@cindex @samp{=} in constraint
@item =
Means that this operand is write-only for this instruction: the previous
value is discarded and replaced by output data.

@cindex @samp{+} in constraint
@item +
Means that this operand is both read and written by the instruction

should be sufficient.  Maybe a note at the strict_low_part and
zero_extract documentation would help, but I'm not sure what.
Patches are welcome.

brgds, H-P

Reply via email to