modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/pr44784.c (about)

     1  typedef struct rtx_def *rtx;
     2  enum rtx_code { SUBREG };
     3  typedef union rtunion_def {
     4      long rtint;
     5      unsigned long rtuint;
     6      rtx rtx;
     7  } rtunion;
     8  struct rtx_def {
     9      enum rtx_code code: 8;
    10      rtunion fld[1];
    11  };
    12  typedef struct simple_bitmap_def {
    13      unsigned long long elms[1];
    14  } *sbitmap;
    15  struct df_link {
    16      struct df_link *next;
    17      rtx reg;
    18  };
    19  typedef enum { UNDEFINED,   CONSTANT,   VARYING } latticevalue;
    20  typedef struct {
    21      latticevalue lattice_val;
    22  } value;
    23  static value *values;
    24  static sbitmap ssa_edges;
    25  void defs_to_varying (struct df_link *start)
    26  {
    27    struct df_link *currdef;
    28    for (currdef = start;
    29         currdef;
    30         currdef = currdef->next)
    31      {
    32        rtx reg = currdef->reg;
    33        if (values[(reg->code == SUBREG
    34  		  ? reg->fld[0].rtx
    35  		  : reg)->fld[0].rtuint].lattice_val != VARYING)
    36  	ssa_edges->elms [(reg->code == SUBREG
    37  			  ? reg->fld[0].rtx
    38  			  : reg)->fld[0].rtuint / 64]
    39  	    |= ((unsigned long long) 1
    40  		<< (reg->code == SUBREG
    41  		    ? reg->fld[0].rtx
    42  		    : reg)->fld[0].rtuint % 64);
    43        values[(reg->code == SUBREG
    44  	      ? reg->fld[0].rtx
    45  	      : reg)->fld[0].rtuint].lattice_val = VARYING;
    46      }
    47  }