A question about fold_rtx when it attempts to fold PC
Kazu Hirata
kazu@cs.umass.edu
Wed Jan 26 15:53:00 GMT 2005
Hi,
fold_rtx somehow attempts to fold PC like so:
case PC:
/* If the next insn is a CODE_LABEL followed by a jump table,
PC's value is a LABEL_REF pointing to that label. That
lets us fold switch statements on the VAX. */
{
rtx next;
if (insn && tablejump_p (insn, &next, NULL))
return gen_rtx_LABEL_REF (Pmode, next);
}
break;
Now what is this suppose to do?
If INSN is a table jump insn, is PC folded to the label immediately
before the label immediately before the dispatch table? The dispatch
table is something that a table jump insn references but does not
jumps to. It doesn't make sense to fold PC this way...
Steven Bosscher recently removed CASE_DROPS_THROUGH from VAX, which
makes me wonder if this is a thing of past.
Also, note that the above "if" condition is never true while compiling
cc1-i files on i686-pc-linux-gnu.
Thanks in advance,
Kazu Hirata
More information about the Gcc
mailing list