Annotation of coherent/d/bin/cc/c/n0/dope.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * C compiler.
                      3:  * Operator and type conversion
                      4:  * information ("dope")  tables.
                      5:  */
                      6: #ifdef   vax
                      7: #include "INC$LIB:cc0.h"
                      8: #else
                      9: #include "cc0.h"
                     10: #endif
                     11: 
                     12: /*
                     13:  * This table, indexed by operator
                     14:  * number (less MIOBASE) is used to get the legal
                     15:  * left and right operand rules.
                     16:  */
                     17: short   opdope[] = {
                     18: 
                     19:        13 + NSTR+NSTL,                                 /* + */
                     20:        13 + NSTR+NSTL,                                 /* - */
                     21:        14 + NSTR+NSTL+NPTR+NPTL,                       /* * */
                     22:        14 + NSTR+NSTL+NPTR+NPTL,                       /* / */
                     23:        14 + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* % */
                     24:        9  + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* & */
                     25:        7  + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* | */
                     26:        8  + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* ^ */
                     27:        12 + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* << */
                     28:        12 + NSTR+NSTL+NPTR+NPTL+NFLT,                  /* >> */
                     29: 
                     30:        2  + NSTR+NSTL+NPTR+ASGN+RLVL+RAS,              /* += */
                     31:        2  + NSTR+NSTL+NPTR+ASGN+RLVL+RAS,              /* -= */
                     32:        2  + NSTR+NSTL+NPTR+NPTL+ASGN+RLVL+RAS,         /* *= */
                     33:        2  + NSTR+NSTL+NPTR+NPTL+ASGN+RLVL+RAS,         /* /= */
                     34:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* %= */
                     35:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* &= */
                     36:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* |= */
                     37:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* ^= */
                     38:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* <<= */
                     39:        2  + NSTR+NSTL+NPTR+NPTL+NFLT+ASGN+RLVL+RAS,    /* >>= */
                     40: 
                     41:        10 + NSTR+NSTL,                                 /* == */
                     42:        10 + NSTR+NSTL,                                 /* != */
                     43:        11 + NSTR+NSTL,                                 /* > */
                     44:        11 + NSTR+NSTL,                                 /* >= */
                     45:        11 + NSTR+NSTL,                                 /* <= */
                     46:        11 + NSTR+NSTL,                                 /* < */
                     47:        0,                                              /* > unsigned */
                     48:        0,                                              /* >= unsigned */
                     49:        0,                                              /* <= unsigned */
                     50:        0,                                              /* < unsigned */
                     51: 
                     52:        0  + NSTL+NFLT,                                 /* Ind */
                     53:        0  + RLVL,                                      /* Addr */
                     54:        0  + NSTL+NPTL,                                 /* - u */
                     55:        0  + NSTL+NPTL+NFLT,                            /* ~ */
                     56:        0  + RTOL,                                      /* ! */
                     57:        4  + RTOL,                                      /* ? */
                     58:        4  + RAS,                                       /* : */
                     59:        15 + NSTL+RLVL+RAS,                             /* ++x */
                     60:        15 + NSTL+RLVL+RAS,                             /* --x */
                     61:        15 + NSTL+RLVL+RAS,                             /* x++ */
                     62:        15 + NSTL+RLVL+RAS,                             /* x-- */
                     63:        1,                                              /* , */
                     64:        0  + NSTL,                                      /* Call */
                     65:        6  + RTOL+RTOR,                                 /* && */
                     66:        5  + RTOL+RTOR,                                 /* || */
                     67:        0,                                              /* Cast of types */
                     68:        0,                                              /* Conversion */
                     69:        0,                                              /* Field marker */
                     70:        0  + RAS,                                       /* Sizeof */
                     71:        2  + ASGN+RLVL+RAS,                             /* = */
                     72:        0,                                              /* Drain conversions */
                     73:        0,                                              /* Init */
                     74:        0,                                              /* Arglist */
                     75:        0,                                              /* Leaf */
                     76:        0,                                              /* Fix up */
                     77:        0                                               /* Block move */
                     78: 
                     79: };
                     80: 
                     81: /*
                     82:  * Conversions.
                     83:  * Indexed by 12*(lt-T_CHAR) + (rt-T_CHAR).
                     84:  * Linear types are the same as the abstract
                     85:  * types, with all pointers mapped to T_PTR
                     86:  * and nothing greater than T_STRUCT.
                     87:  * Flags are:
                     88:  *      GOAL    Mask to get goal type.
                     89:  *      GTR     Goal is same as right.
                     90:  *      GTL     Goal is same as left.
                     91:  *      CVR     Convert right.
                     92:  *      CVL     Convert left.
                     93:  *      CVRA    If op is ASGN, do CVR.
                     94:  *     CARA    If op is ASGN, do CAST right side.
                     95:  *      UREL    Use unsigned relations.
                     96:  */
                     97: short  cvdope[] = {
                     98: 
                     99:        T_INT   + CVL + CVR + CVRA,                     /*  c ::  c */
                    100:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  c :: uc */
                    101:        T_INT   + CVL + CVR + CVRA,                     /*  c ::  s */
                    102:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  c :: us */
                    103:        T_INT   + CVL,                                  /*  c ::  i */
                    104:        T_UINT  + CVL + CVRA + UREL,                    /*  c :: ui */
                    105:        GTR     + CVL + CARA + UREL,                    /*  c ::  p */
                    106:        T_LONG  + CVL + CVRA,                           /*  c ::  l */
                    107:        T_ULONG + CVL + CVRA + UREL,                    /*  c :: ul */
                    108:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  c ::  f */
                    109:        T_DOUBLE+ CVL + CVRA,                           /*  c ::  d */
                    110:        0,                                              /*  c ::  v */
                    111:        0,                                              /*  c ::  t */
                    112: 
                    113:        T_UINT  + CVL + CVR + CVRA + UREL,              /* uc ::  c */
                    114:        T_UINT  + CVL + CVR + CVRA + UREL,              /* uc :: uc */
                    115:        T_UINT  + CVL + CVR + CVRA + UREL,              /* uc ::  s */
                    116:        T_UINT  + CVL + CVR + CVRA + UREL,              /* uc :: us */
                    117:        T_UINT  + CVL + CVR + UREL,                     /* uc ::  i */
                    118:        T_UINT  + CVL + CVRA + UREL,                    /* uc :: ui */
                    119:        GTR     + CVL + CARA + UREL,                    /* uc ::  p */
                    120:        T_ULONG + CVL + CVR + CVRA + UREL,              /* uc ::  l */
                    121:        T_ULONG + CVL + CVRA + UREL,                    /* uc :: ul */
                    122:        T_DOUBLE+ CVL + CVR + CVRA,                     /* uc ::  f */
                    123:        T_DOUBLE+ CVL + CVRA,                           /* uc ::  d */
                    124:        0,                                              /* uc ::  v */
                    125:        0,                                              /* uc ::  t */
                    126: 
                    127:        T_INT   + CVL + CVR + CVRA,                     /*  s ::  c */
                    128:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  s :: uc */
                    129:        T_INT   + CVL + CVR + CVRA,                     /*  s ::  s */
                    130:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  s :: us */
                    131:        T_INT   + CVL,                                  /*  s ::  i */
                    132:        T_UINT  + CVL + CVRA + UREL,                    /*  s :: ui */
                    133:        GTR     + CVL + CARA + UREL,                    /*  s ::  p */
                    134:        T_LONG  + CVL + CVRA,                           /*  s ::  l */
                    135:        T_ULONG + CVL + CVRA + UREL,                    /*  s :: ul */
                    136:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  s ::  f */
                    137:        T_DOUBLE+ CVL + CVRA,                           /*  s ::  d */
                    138:        0,                                              /*  s ::  v */
                    139:        0,                                              /*  s ::  t */
                    140: 
                    141:        T_UINT  + CVL + CVR + CVRA + UREL,              /* us ::  c */
                    142:        T_UINT  + CVL + CVR + CVRA + UREL,              /* us :: uc */
                    143:        T_UINT  + CVL + CVR + CVRA + UREL,              /* us ::  s */
                    144:        T_UINT  + CVL + CVR + CVRA + UREL,              /* us :: us */
                    145:        T_UINT  + CVL + CVR + CVRA + UREL,              /* us ::  i */
                    146:        T_UINT  + CVL + UREL,                           /* us :: ui */
                    147:        GTR     + CVL + CARA + UREL,                    /* us ::  p */
                    148:        T_ULONG + CVL + CVR + CVRA + UREL,              /* us ::  l */
                    149:        T_ULONG + CVL + CVRA + UREL,                    /* us :: ul */
                    150:        T_DOUBLE+ CVL + CVR + CVRA,                     /* us ::  f */
                    151:        T_DOUBLE+ CVL + CVRA,                           /* us ::  d */
                    152:        0,                                              /* us ::  v */
                    153:        0,                                              /* us ::  t */
                    154: 
                    155:        T_INT   + CVR + CVRA,                           /*  i ::  c */
                    156:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  i :: uc */
                    157:        T_INT   + CVR + CVRA,                           /*  i ::  s */
                    158:        T_UINT  + CVL + CVR + CVRA + UREL,              /*  i :: us */
                    159:        T_INT,                                          /*  i ::  i */
                    160:        T_UINT  + CVL + CVRA + UREL,                    /*  i :: ui */
                    161:        GTR     + CVL + CARA + UREL,                    /*  i ::  p */
                    162:        T_LONG  + CVL + CVRA,                           /*  i ::  l */
                    163:        T_ULONG + CVL + CVRA + UREL,                    /*  i :: ul */
                    164:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  i ::  f */
                    165:        T_DOUBLE+ CVL + CVRA,                           /*  i ::  d */
                    166:        0,                                              /*  i ::  v */
                    167:        0,                                              /*  i ::  t */
                    168: 
                    169:        T_UINT  + CVR + CVRA + UREL,                    /* ui ::  c */
                    170:        T_UINT  + CVR + CVRA + UREL,                    /* ui :: uc */
                    171:        T_UINT  + CVR + CVRA + UREL,                    /* ui ::  s */
                    172:        T_UINT  + CVR + CVRA + UREL,                    /* ui :: us */
                    173:        T_UINT  + CVR + CVRA + UREL,                    /* ui ::  i */
                    174:        T_UINT  + UREL,                                 /* ui :: ui */
                    175:        GTR     + CVL + CARA + UREL,                    /* ui ::  p */
                    176:        T_ULONG + CVL + CVR + CVRA + UREL,              /* ui ::  l */
                    177:        T_ULONG + CVL + CVRA + UREL,                    /* ui :: ul */
                    178:        T_DOUBLE+ CVL + CVR + CVRA,                     /* ui ::  f */
                    179:        T_DOUBLE+ CVL + CVRA,                           /* ui ::  d */
                    180:        0,                                              /* ui ::  v */
                    181:        0,                                              /* ui ::  t */
                    182: 
                    183:        GTL     + CVR + CVRA + UREL,                    /*  p ::  c */
                    184:        GTL     + CVR + CVRA + UREL,                    /*  p :: uc */
                    185:        GTL     + CVR + CVRA + UREL,                    /*  p ::  s */
                    186:        GTL     + CVR + CVRA + UREL,                    /*  p :: us */
                    187:        GTL     + CVR + CVRA + UREL,                    /*  p ::  i */
                    188:        GTL     + CVR + CVRA + UREL,                    /*  p :: ui */
                    189:        GTL     + UREL,                                 /*  p ::  p */
                    190:        GTL     + CVR + CVRA + UREL,                    /*  p ::  l */
                    191:        GTL     + CVR + CVRA + UREL,                    /*  p :: ul */
                    192:        0,                                              /*  p ::  f */
                    193:        0,                                              /*  p ::  d */
                    194:        0,                                              /*  p ::  v */
                    195:        0,                                              /*  p ::  t */
                    196:                
                    197:        T_LONG  + CVR + CVRA,                           /*  l ::  c */
                    198:        T_ULONG + CVL + CVR + CVRA + UREL,              /*  l :: uc */
                    199:        T_LONG  + CVR + CVRA,                           /*  l ::  s */
                    200:        T_ULONG + CVL + CVR + CVRA + UREL,              /*  l :: us */
                    201:        T_LONG  + CVR + CVRA,                           /*  l ::  i */
                    202:        T_ULONG + CVL + CVR + CVRA + UREL,              /*  l :: ui */
                    203:        GTR     + CVL + CARA + UREL,                    /*  l ::  p */
                    204:        T_LONG,                                         /*  l ::  l */
                    205:        T_ULONG + CVL + CVRA + UREL,                    /*  l :: ul */
                    206:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  l ::  f */
                    207:        T_DOUBLE+ CVL + CVRA,                           /*  l ::  d */
                    208:        0,                                              /*  l ::  v */
                    209:        0,                                              /*  l ::  t */
                    210:        
                    211:        T_ULONG + CVR + CVRA + UREL,                    /* ul ::  c */
                    212:        T_ULONG + CVR + CVRA + UREL,                    /* ul :: uc */
                    213:        T_ULONG + CVR + CVRA + UREL,                    /* ul ::  s */
                    214:        T_ULONG + CVR + CVRA + UREL,                    /* ul :: us */
                    215:        T_ULONG + CVR + CVRA + UREL,                    /* ul ::  i */
                    216:        T_ULONG + CVR + CVRA + UREL,                    /* ul :: ui */
                    217:        GTR     + CVL + CARA + UREL,                    /* ul ::  p */
                    218:        T_ULONG + CVR + CVRA + UREL,                    /* ul ::  l */
                    219:        T_ULONG + UREL,                                 /* ul :: ul */
                    220:        T_DOUBLE+ CVL + CVR + CVRA,                     /* ul ::  f */
                    221:        T_DOUBLE+ CVL + CVRA,                           /* ul ::  d */
                    222:        0,                                              /* ul ::  v */
                    223:        0,                                              /* ul ::  t */
                    224:        
                    225:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f ::  c */
                    226:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f :: uc */
                    227:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f ::  s */
                    228:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f :: us */
                    229:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f ::  i */
                    230:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f :: ui */
                    231:        0,                                              /*  f ::  p */
                    232:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f ::  l */
                    233:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f :: ul */
                    234:        T_DOUBLE+ CVL + CVR + CVRA,                     /*  f ::  f */
                    235:        T_DOUBLE+ CVL + CVRA,                           /*  f ::  d */
                    236:        0,                                              /*  f ::  v */
                    237:        0,                                              /*  f ::  t */
                    238: 
                    239:        T_DOUBLE+ CVR + CVRA,                           /*  d ::  c */
                    240:        T_DOUBLE+ CVR + CVRA,                           /*  d :: uc */
                    241:        T_DOUBLE+ CVR + CVRA,                           /*  d ::  s */
                    242:        T_DOUBLE+ CVR + CVRA,                           /*  d :: us */
                    243:        T_DOUBLE+ CVR + CVRA,                           /*  d ::  i */
                    244:        T_DOUBLE+ CVR + CVRA,                           /*  d :: ui */
                    245:        0,                                              /*  d ::  p */
                    246:        T_DOUBLE+ CVR + CVRA,                           /*  d ::  l */
                    247:        T_DOUBLE+ CVR + CVRA,                           /*  d :: ul */
                    248:        T_DOUBLE+ CVR + CVRA,                           /*  d ::  f */
                    249:        T_DOUBLE,                                       /*  d ::  d */
                    250:        0,                                              /*  d ::  v */
                    251:        0,                                              /*  d ::  t */
                    252: 
                    253:        0,                                              /*  v ::  c */
                    254:        0,                                              /*  v :: uc */
                    255:        0,                                              /*  v ::  s */
                    256:        0,                                              /*  v :: us */
                    257:        0,                                              /*  v ::  i */
                    258:        0,                                              /*  v :: ui */
                    259:        0,                                              /*  v ::  p */
                    260:        0,                                              /*  v ::  l */
                    261:        0,                                              /*  v :: ul */
                    262:        0,                                              /*  v ::  f */
                    263:        0,                                              /*  v ::  d */
                    264:        0,                                              /*  v ::  v */
                    265:        0,                                              /*  v ::  t */
                    266: 
                    267:        0,                                              /*  t ::  c */
                    268:        0,                                              /*  t :: uc */
                    269:        0,                                              /*  t ::  s */
                    270:        0,                                              /*  t :: us */
                    271:        0,                                              /*  t ::  i */
                    272:        0,                                              /*  t :: ui */
                    273:        0,                                              /*  t ::  p */
                    274:        0,                                              /*  t ::  l */
                    275:        0,                                              /*  t :: ul */
                    276:        0,                                              /*  t ::  f */
                    277:        0,                                              /*  t ::  d */
                    278:        0,                                              /*  t ::  v */
                    279:        GTL                                             /*  t ::  t */
                    280: };

unix.superglobalmegacorp.com

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