Annotation of researchv9/cmd/sun/pcc/opmatch.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)opmatch.c 1.1 86/02/03 Copyr 1985 Sun Micro";
                      3: #endif
                      4: 
                      5: /*
                      6:  * Copyright (c) 1985 by Sun Microsystems, Inc.
                      7:  */
                      8: 
                      9: #include "cpass2.h"
                     10: 
                     11: /*
                     12:  * int
                     13:  * opmatch(op,tableop)
                     14:  *     Decides if an operator 'tableop' from the code templates
                     15:  *     table should be considered in pattern matching when a given
                     16:  *     operator 'op' shows up in an expression tree.
                     17:  */
                     18: 
                     19: extern int mamask[];   /* from match.c */
                     20: 
                     21: int
                     22: opmatch(op,tableop)
                     23:        unsigned op;
                     24:        register unsigned tableop;
                     25: {
                     26:        register opmtemp;
                     27: 
                     28:        /*
                     29:         * check target machine dependencies against code generation options
                     30:         */
                     31:        if (tableop&OP68SPEC) {
                     32:                if ((tableop&OP68020) && !use68020)
                     33:                        return(0);
                     34:                if ((tableop&OP68881) && !use68881)
                     35:                        return(0);
                     36:                if ((tableop&NO68020) && use68020)
                     37:                        return(0);
                     38:                if ((tableop&NO68881) && use68881)
                     39:                        return(0);
                     40:        }
                     41:        tableop &= ~OP68SPEC;
                     42: 
                     43:        /*
                     44:         * check for match against a specific operator
                     45:         */
                     46:        if ( tableop < OPSIMP )
                     47:                return( tableop == op );
                     48: 
                     49:        /*
                     50:         * check for match against an operator class (e.g., OPSIMP)
                     51:         */
                     52:        if ((opmtemp=mamask[tableop - OPSIMP])&SPFLG){
                     53:                switch (op) {
                     54:                case NAME:
                     55:                case FCON:
                     56:                case ICON:
                     57:                case OREG:
                     58:                case REG:
                     59:                        return(1);
                     60:                case UNARY MUL:
                     61:                        /*
                     62:                         * for autoincrement addressing, recognize
                     63:                         * *p++, *--p as LTYPEs, even though they
                     64:                         * aren't.  We have to finish this test
                     65:                         * by calling shumul() in match() (bletch)
                     66:                         */
                     67:                        return(1);
                     68:                }
                     69:                return(0);
                     70:        }
                     71:        /*
                     72:         * same check on ASG operator class
                     73:         */
                     74:        return( (dope[op]&(opmtemp|ASGFLG)) == opmtemp );
                     75: }

unix.superglobalmegacorp.com

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