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)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