(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr27331.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -ftree-vectorize" } */
       3  
       4  struct funny_match
       5  {
       6    int this, other;
       7  };
       8  
       9  typedef struct rtx {
      10      int code;
      11  } *rtx;
      12  
      13  extern rtx recog_operand[];
      14  extern int which_alternative;
      15  extern int nalternatives;
      16  
      17  int
      18  constrain_operands (insn_code_num, strict)
      19       int insn_code_num;
      20       int strict;
      21  {
      22    char *constraints[10];
      23    struct funny_match funny_match[10];
      24    register int c;
      25    int funny_match_index;
      26  
      27    which_alternative = 0;
      28  
      29    while (which_alternative < nalternatives)
      30      {
      31        register int opno;
      32        register char *p = constraints[opno];
      33        int lose = 0;
      34        funny_match_index = 0;
      35  
      36        while (*p && (c = *p++) != ',')
      37  	funny_match[funny_match_index++].other = c - '0';
      38  
      39        if ((((recog_operand[opno])->code) == 12))
      40  	lose = 1;
      41  
      42        if (!lose)
      43  	{
      44  	  while (--funny_match_index >= 0)
      45  	    recog_operand[funny_match[funny_match_index].other]
      46  		    = recog_operand[funny_match[funny_match_index].this];
      47  	  return 1;
      48  	}
      49        which_alternative++;
      50      }
      51  
      52    if (strict == 0)
      53      return constrain_operands (insn_code_num, -1);
      54    return 0;
      55  }
      56