Annotation of coherent/b/bin/c/n1/i8086/mtree4.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * This file contains a number
                      3:  * of machine specific tree modification
                      4:  * functions. These are for the SMALL
                      5:  * and LARGE model Intel iAPX-86.
                      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 
                     15:  * the left subgoal context. It watches
                     16:  * for `test' instructions on the
                     17:  * 8086.
                     18:  */
                     19: getldown(tp, c)
                     20: TREE *tp;
                     21: {
                     22:        if (c==MFLOW && (tp->t_rp->t_flag&T_IMM)!=0)
                     23:                return (MRADDR);
                     24:        return (MRVALUE);
                     25: }
                     26: 
                     27: /*
                     28:  * This routine figures out the
                     29:  * right hand subgoal contexts for the
                     30:  * shift instruction.
                     31:  */
                     32: getrdown(tp, c)
                     33: TREE *tp;
                     34: {
                     35:        register op;
                     36: 
                     37:        if ((op=tp->t_rp->t_op)==ICON || op==LCON)
                     38:                return (MRADDR);
                     39:        return (MRVALUE);
                     40: }
                     41: 
                     42: /*
                     43:  * Fix up the type of a reordered
                     44:  * ADD node. Watch for pointers.
                     45:  */
                     46: fixaddtype(tp)
                     47: TREE *tp;
                     48: {
                     49:        register tt;
                     50:        register lt, rt;
                     51: 
                     52:        lt = tp->t_lp->t_type;
                     53:        rt = tp->t_rp->t_type;
                     54:        if (ispoint(lt))
                     55:                tt = lt;
                     56:        else if (ispoint(rt))
                     57:                tt = rt;
                     58:        else if (islong(lt))
                     59:                tt = lt;
                     60:        else if (islong(rt))
                     61:                tt = rt;
                     62:        else
                     63:                tt = lt;
                     64:        tp->t_type = tt;
                     65: }
                     66: 
                     67: /*
                     68:  * Zap the type field of tree
                     69:  * node `tp' into the type used for
                     70:  * offset addressing trees.
                     71:  */
                     72: setofstype(tp)
                     73: TREE *tp;
                     74: {
                     75: #if !ONLYSMALL
                     76:        if (notvariant(VSMALL))
                     77:                tp->t_type = LOFS;
                     78:        else
                     79: #endif
                     80:                tp->t_type = SOFS;
                     81: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.