IRA changes rules of the game
Joern Rennecke
amylaar@spamcop.net
Thu Oct 20 17:50:00 GMT 2011
Quoting Ulrich Weigand <uweigand@de.ibm.com>:
> Paulo J. Matos wrote:
>
>> (define_insn_and_split "neghi_internal"
>> [(set (match_operand:QI 0 "register_operand" "=c")
>> (neg:QI (match_dup 0)))
>> (set (match_operand:QI 1 "register_operand" "=c")
>> (plus:QI
>> (plus:QI
>> (ltu:QI (neg:QI (match_dup 0)) (const_int 0))
>> (match_dup 1))
>> (const_int 0)))
>> (clobber (reg:CC RCC))]
>
>> Am I missing something or something here is broken?
>
> When reload looks at the above pattern, it will see just
> two operands, both of which are output-only. So when it
> decides to reload one of the operands, it will only provide
> an output reload, no input reload.
>
> For operands that are actually used for both input and
> output, you need to provide two match_operand clauses,
Or just change the constraint to "+c" .
More information about the Gcc
mailing list