This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
A question about fold_rtx when it attempts to fold PC
- From: Kazu Hirata <kazu at cs dot umass dot edu>
- To: gcc at gcc dot gnu dot org
- Cc: stevenb at suse dot de, dave dot anglin at nrc dot ca, matt at 3am-software dot com
- Date: Wed, 26 Jan 2005 09:53:23 -0500 (EST)
- Subject: A question about fold_rtx when it attempts to fold PC
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