1typedef struct rtx_def *rtx;
2enum rtx_code { SUBREG };
3typedef union rtunion_def {
4    long rtint;
5    unsigned long rtuint;
6    rtx rtx;
7} rtunion;
8struct rtx_def {
9    enum rtx_code code: 8;
10    rtunion fld[1];
11};
12typedef struct simple_bitmap_def {
13    unsigned long long elms[1];
14} *sbitmap;
15struct df_link {
16    struct df_link *next;
17    rtx reg;
18};
19typedef enum { UNDEFINED,   CONSTANT,   VARYING } latticevalue;
20typedef struct {
21    latticevalue lattice_val;
22} value;
23static value *values;
24static sbitmap ssa_edges;
25void 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}
48