Annotation of coherent/d/bin/cc/c/n0/dope.c, revision 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.