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