|
|
1.1 ! root 1: /* ! 2: * n1/i386/mtree4.c ! 3: * Machine specific tree modification functions. ! 4: * i386. ! 5: */ ! 6: ! 7: #ifdef vax ! 8: #include "INC$LIB:cc1.h" ! 9: #else ! 10: #include "cc1.h" ! 11: #endif ! 12: ! 13: /* ! 14: * This routine figures out the left subgoal context. ! 15: * It watches for 'test' instructions on the 8086. ! 16: */ ! 17: getldown(tp, c) ! 18: TREE *tp; ! 19: { ! 20: return (c==MFLOW && (tp->t_rp->t_flag&T_IMM)!=0) ? MRADDR : MRVALUE; ! 21: } ! 22: ! 23: /* ! 24: * This routine figures out the right hand subgoal contexts ! 25: * for the shift instruction. ! 26: */ ! 27: getrdown(tp, c) ! 28: TREE *tp; ! 29: { ! 30: register int op; ! 31: ! 32: return ((op=tp->t_rp->t_op)==ICON || op==LCON) ? MRADDR : MRVALUE; ! 33: } ! 34: ! 35: /* ! 36: * Fix up the type of a reordered ADD node. ! 37: * Watch for pointers. ! 38: */ ! 39: fixaddtype(tp) ! 40: TREE *tp; ! 41: { ! 42: register tt; ! 43: register lt, rt; ! 44: ! 45: lt = tp->t_lp->t_type; ! 46: rt = tp->t_rp->t_type; ! 47: if (ispoint(lt)) ! 48: tt = lt; ! 49: else if (ispoint(rt)) ! 50: tt = rt; ! 51: else if (islong(lt)) ! 52: tt = lt; ! 53: else if (islong(rt)) ! 54: tt = rt; ! 55: else ! 56: tt = lt; ! 57: tp->t_type = tt; ! 58: } ! 59: ! 60: /* ! 61: * Zap the type field of tree node 'tp' ! 62: * into the type used for offset addressing trees. ! 63: */ ! 64: setofstype(tp) ! 65: TREE *tp; ! 66: { ! 67: tp->t_type = OFFS; ! 68: } ! 69: ! 70: /* end of n1/i386/mtree4.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.