> From: Ian Lance Taylor <ian@airs.com>
> Date: 29 Mar 2005 23:05:11 -0500
> Hans-Peter Nilsson <[EMAIL PROTECTED]> writes:
> What am I missing?

If anything, to post an updated proposal spelling out the bits
below!

(I.e. nothing as long as there is always a matching
automatically generated insn; one with an added
(set (reg CC_REG) (unspec ...)) for every insn where
NOTICE_UPDATE_CC can presently indicate a "redundant" cc0
setter.)

> The gen* files will need to duplicate each
> instruction with the clobbercc (or cc0) attribute,

You know it, but for the record (needs to be spelled out): every
insn "has the attribute".  It's a matter of which can have it
set to a value that indicates that cc0 can be set to something
not explicit in the RTL, i.e. for "clobbercc" it'd be "yes", for
"cc0" any attribute value but "explicit" (cc0 users that aren't
setters) and perhaps a separate value "manual", where no
automatic handling/expansion is applied.

> producing one
> version which clobbers the cc and one version which sets it to an
> unspec.  When the new optimization pass deletes an instruction, it
> will convert the previous clobbercc instruction to the variant which
> sets cc to an unspec.  Note that the maintainer does not have to write
> an additional patterns to make this work.

The information in the last sentence is what I was missing.  Good!

> Given the above, I don't think there will be pattern explosion, at
> least not manually written pattern explosion.

FWIW, only manual pattern explosion matters to me as a target
maintainer (generic regressions due to explosion can be dealt
with target-independently).

brgds, H-P

Reply via email to