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;
defs_to_varying(struct df_link * start)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 }
48