This is the mail archive of the gcc-regression@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]

Re: GCC build of HEAD failed for native with your patch on 2004-08-12T11:01:41Z.


This appears to be due to Zack's patch to the gen* code. It reproduces on a cross to powerpc-eabisim, and the problem is that recog() starts with:


int recog (rtx x0 ATTRIBUTE_UNUSED, rtx insn ATTRIBUTE_UNUSED, int *pnum_clobbers ATTRIBUTE_UNUSED) { rtx * const operands ATTRIBUTE_UNUSED = &recog_data.operand[0]; rtx x1 ATTRIBUTE_UNUSED; rtx x2 ATTRIBUTE_UNUSED; rtx x3 ATTRIBUTE_UNUSED; rtx x4 ATTRIBUTE_UNUSED; rtx x5 ATTRIBUTE_UNUSED; rtx x6 ATTRIBUTE_UNUSED; rtx x7 ATTRIBUTE_UNUSED; int tem ATTRIBUTE_UNUSED; recog_data.insn = NULL_RTX;

  switch (GET_CODE (x0))
    {
    case SET:
      goto L1;
    case PARALLEL:
      goto L14308;
    case UNSPEC_VOLATILE:
      goto L14333;
    case RETURN:
      goto L14334;
    case CONST_INT:
      goto L14335;
    case TRAP_IF:
      goto L7594;
    case PREFETCH:
      goto L7710;
    case UNSPEC:
      goto L14343;
    default:
     break;
   }
 L7622: ATTRIBUTE_UNUSED_LABEL
  if (XVECLEN (x0, 0) >= 3
      && any_operand (x0, VOIDmode))
    {
      operands[0] = x0;
      goto L7623;
    }

but after the default case in the switch is hit, there's no guarantee that x0 is a vector of any kind, and in fact it usually isn't; so this was crashing trying to recognize

(insn:HI 44 41 49 0 /Network/Servers/hills/Volumes/capanna/gkeating/co/egcs-mainline/gcc/ gcc/libgcc2.c:466 (use (reg/i:DI 3 3 [ <result> ])) -1 (insn_list:REG_DEP_ANTI 47 (insn_list:REG_DEP_ANTI 6 (insn_list:REG_DEP_ANTI 7 (insn_list:REG_DEP_ANTI 20 (insn_list:REG_DEP_ANTI 22 (insn_list:REG_DEP_ANTI 24 (insn_list:REG_DEP_ANTI 25 (insn_list:REG_DEP_ANTI 27 (insn_list:REG_DEP_ANTI 28 (insn_list:REG_DEP_ANTI 30 (insn_list:REG_DEP_ANTI 31 (insn_list:REG_DEP_ANTI 32 (insn_list:REG_DEP_ANTI 34 (insn_list 41 (nil)))))))))))))))

It appears to have lost the code that implemented this bit from gccint.info:

`(match_parallel N PREDICATE [SUBPAT...])'
...
     When matching an insn, it matches if the body of the
     insn is a `parallel' expression with at least as many elements as
     the vector of SUBPAT expressions in the `match_parallel', if each
     SUBPAT matches the corresponding element of the `parallel', _and_
     the function PREDICATE returns nonzero on the `parallel' that is
     the body of the insn.

note the part about requiring the body to be a PARALLEL.

--
Geoff Keating <geoffk@apple.com>

Attachment: smime.p7s
Description: S/MIME cryptographic signature


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