This is the mail archive of the
mailing list for the GCC project.
Re: IRA changes rules of the game
- From: Joern Rennecke <amylaar at spamcop dot net>
- To: Ulrich Weigand <uweigand at de dot ibm dot com>
- Cc: "Paulo J. Matos" <paulo at matos-sorge dot com>, gcc at gcc dot gnu dot org
- Date: Thu, 20 Oct 2011 13:12:34 -0400
- Subject: Re: IRA changes rules of the game
- References: <201110201525.p9KFPixB010921@d06av02.portsmouth.uk.ibm.com>
Quoting Ulrich Weigand <firstname.lastname@example.org>:
Paulo J. Matos wrote:
[(set (match_operand:QI 0 "register_operand" "=c")
(neg:QI (match_dup 0)))
(set (match_operand:QI 1 "register_operand" "=c")
(ltu:QI (neg:QI (match_dup 0)) (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" .