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