This is the mail archive of the
mailing list for the GCC project.
RE: [PATCH] RTL docs update
On 02 July 2007 20:58, Seongbae Park (???, ???) wrote:
> On 7/2/07, Richard Sandiford wrote:
>> ""Seongbae Park (???, ???)"" writes:
>>> + UNSPEC can occur all by itself in a PATTERN, as a component of a
>>> PARALLEL, + or inside an expression. + UNSPEC by itself or as a
>>> component of a PARALLEL + is currently considered not deletable.
>>> + FIXME: Replace all uses of UNSPEC that appears by itself or as a
>>> component + of a PARALLEL with USE. + */
>> Do we actually want to do that? Some of the current uses of UNSPECs are
>> for things that are supposed to be less severe than an UNSPEC_VOLATILE.
>> The MIPS case was an example of that. The SPU ifetch pattern is another.
> Before further to into this discussion, let me define some terms I'll use:
> I'll call an rtx sppearing as "top-level" if the rtx
> appears either an INSN itself or as the operand of PARALLEL
> but not as operands of other rtx.
> The longer term direction I was thinking we wanted, was to use top-level USE
> to indicate the value is used by something,
> and make it invalid to use UNSPEC as top-level
> (or even if it is not invalid, it would essentially be a dead code,
> just like e.g. "PLUS" as top-level would be a dead code).
My understanding of an UNSPEC is that it's something the middle-end should
treat as a kind of 'black box'; it would make sense to me that the mid-end not
be expected to look inside and make sense of what's there (barring assistance
from the back-end), so just because there's a REG in there doesn't mean the
midend should treat it as a USE, but OTOH isn't 'dead code' way too strong a
term to use? It's not deleteable, is it?
Can't think of a witty .sigline today....