This is the mail archive of the
mailing list for the GCC project.
Re: Semantics of PARALLEL that sets and uses CC0
- From: Paolo Bonzini <bonzini at gnu dot org>
- To: Ulrich Weigand <uweigand at de dot ibm dot com>
- Cc: Steven Bosscher <stevenb dot gcc at gmail dot com>, GCC Mailing List <gcc at gcc dot gnu dot org>, eric dot weddington at atmel dot com
- Date: Mon, 09 Aug 2010 13:53:01 -0400
- Subject: Re: Semantics of PARALLEL that sets and uses CC0
- References: <201008091739.o79HdVSW013616@d12av02.megacenter.de.ibm.com>
On 08/09/2010 01:39 PM, Ulrich Weigand wrote:
[(parallel [(set (cc0)
(compare (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "nonmemory_operand" "")))
(clobber (match_scratch:QI 4 ""))])
(match_operator 0 "ordered_comparison_operator" [(cc0)
(label_ref (match_operand 3 "" ""))
[...] the second pattern of the PARALLEL is just a CLOBBER.
The USE of CC0 happens in a completely separate second INSN that is
emitted by this define_expand. (Note that as opposed to define_insn,
define_expand can emit more than a single insn.)
Yeah, that's the case. What my patch did was just to combine the
PARALLEL that the old cmpsi patterns produced (cc0 set), and the SET of
the old bCC patterns (cc0 use).
In fact, having a cc0 set not _followed_ by a cc0 use would totally
break every other RTL pass.