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

Geoffrey Keating geoffk@apple.com
Thu Aug 12 20:55:00 GMT 2004


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>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2361 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-regression/attachments/20040812/28dd955a/attachment.p7s>


More information about the Gcc-regression mailing list