> 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