This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]