(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.c-torture/
compile/
980329-1.c
       1  typedef __SIZE_TYPE__ size_t;
       2  struct re_pattern_buffer
       3    {
       4      unsigned char *buffer;
       5      unsigned long int used;
       6    };
       7  struct re_registers
       8    {
       9      int *start;
      10    };
      11  
      12  static const char **regstart, **regend;
      13  static const char **old_regend;
      14  
      15  static int
      16  re_match_2_internal (struct re_pattern_buffer *bufp,
      17  		     struct re_registers *regs)
      18  {
      19    unsigned char *p = bufp->buffer;
      20    unsigned char *pend = p + bufp->used;
      21  
      22    for (;;)
      23      {
      24        int highest_active_reg = 1;
      25        if (bufp)
      26  	{
      27  	  int i;
      28  	  for (i = 1;; i++)
      29  	    regs->start[i] = 0;
      30  	}
      31  
      32        switch ((unsigned int) *p++)
      33  	{
      34  	case 1:
      35  	  {
      36  	    unsigned char r = *p;
      37  	    if (r)
      38  	      highest_active_reg = r;
      39  	  }
      40  	  if (p + 2 == pend)
      41  	    {
      42  	      char is_a_jump_n = 0;
      43  	      int mcnt = 0;
      44  	      unsigned char *p1;
      45  
      46  	      p1 = p + 2;
      47  	      switch (*p1++)
      48  		{
      49  		case 2:
      50  		  is_a_jump_n = 1;
      51  		case 1:
      52  		  do { do { mcnt = *p1; } while (0); p1 += 2; } while (0);
      53  		  if (is_a_jump_n)
      54  		    p1 = 0;
      55  		}
      56  
      57  	      if (mcnt && *p1 == 0)
      58  		{
      59  		  unsigned r;
      60  		  for (r = 0; r < (unsigned) *p + (unsigned) *(p + 1); r++)
      61  		    {
      62  		      if (regend[0] >= regstart[r])
      63  			regend[r] = old_regend[r];
      64  		    }
      65  		  do { while (0 < highest_active_reg + 1) { } } while (0);
      66  		}
      67  	    }
      68  	}
      69      }
      70  
      71    return -1;
      72  }