1*6891d857SDavid du Colombier #include "gc.h" 2*6891d857SDavid du Colombier 3*6891d857SDavid du Colombier int machcap(Node * n)4*6891d857SDavid du Colombiermachcap(Node *n) 5*6891d857SDavid du Colombier { 6*6891d857SDavid du Colombier if(n == Z) 7*6891d857SDavid du Colombier return 1; /* test */ 8*6891d857SDavid du Colombier switch(n->op){ 9*6891d857SDavid du Colombier 10*6891d857SDavid du Colombier case OADD: 11*6891d857SDavid du Colombier case OAND: 12*6891d857SDavid du Colombier case OOR: 13*6891d857SDavid du Colombier case OSUB: 14*6891d857SDavid du Colombier case OXOR: 15*6891d857SDavid du Colombier if(typev[n->left->type->etype]) 16*6891d857SDavid du Colombier return 1; 17*6891d857SDavid du Colombier break; 18*6891d857SDavid du Colombier 19*6891d857SDavid du Colombier case OMUL: 20*6891d857SDavid du Colombier case OLMUL: 21*6891d857SDavid du Colombier case OASMUL: 22*6891d857SDavid du Colombier case OASLMUL: 23*6891d857SDavid du Colombier return 1; 24*6891d857SDavid du Colombier 25*6891d857SDavid du Colombier case OLSHR: 26*6891d857SDavid du Colombier case OASHR: 27*6891d857SDavid du Colombier case OASHL: 28*6891d857SDavid du Colombier case OASASHL: 29*6891d857SDavid du Colombier case OASASHR: 30*6891d857SDavid du Colombier case OASLSHR: 31*6891d857SDavid du Colombier return 1; 32*6891d857SDavid du Colombier 33*6891d857SDavid du Colombier case OCAST: 34*6891d857SDavid du Colombier if(typev[n->type->etype]) { 35*6891d857SDavid du Colombier if(!typefd[n->left->type->etype]) 36*6891d857SDavid du Colombier return 1; 37*6891d857SDavid du Colombier } else if(!typefd[n->type->etype]) { 38*6891d857SDavid du Colombier if(typev[n->left->type->etype]) 39*6891d857SDavid du Colombier return 1; 40*6891d857SDavid du Colombier } 41*6891d857SDavid du Colombier break; 42*6891d857SDavid du Colombier 43*6891d857SDavid du Colombier case OCOMMA: 44*6891d857SDavid du Colombier case OCOND: 45*6891d857SDavid du Colombier case OLIST: 46*6891d857SDavid du Colombier case OANDAND: 47*6891d857SDavid du Colombier case OOROR: 48*6891d857SDavid du Colombier case ONOT: 49*6891d857SDavid du Colombier return 1; 50*6891d857SDavid du Colombier 51*6891d857SDavid du Colombier case OCOM: 52*6891d857SDavid du Colombier case ONEG: 53*6891d857SDavid du Colombier if(typechl[n->left->type->etype]) 54*6891d857SDavid du Colombier return 1; 55*6891d857SDavid du Colombier if(typev[n->left->type->etype]) 56*6891d857SDavid du Colombier return 1; 57*6891d857SDavid du Colombier return 0; 58*6891d857SDavid du Colombier 59*6891d857SDavid du Colombier case OASADD: 60*6891d857SDavid du Colombier case OASSUB: 61*6891d857SDavid du Colombier case OASAND: 62*6891d857SDavid du Colombier case OASOR: 63*6891d857SDavid du Colombier case OASXOR: 64*6891d857SDavid du Colombier return 1; 65*6891d857SDavid du Colombier 66*6891d857SDavid du Colombier case OPOSTINC: 67*6891d857SDavid du Colombier case OPOSTDEC: 68*6891d857SDavid du Colombier case OPREINC: 69*6891d857SDavid du Colombier case OPREDEC: 70*6891d857SDavid du Colombier return 1; 71*6891d857SDavid du Colombier 72*6891d857SDavid du Colombier case OEQ: 73*6891d857SDavid du Colombier case ONE: 74*6891d857SDavid du Colombier case OLE: 75*6891d857SDavid du Colombier case OGT: 76*6891d857SDavid du Colombier case OLT: 77*6891d857SDavid du Colombier case OGE: 78*6891d857SDavid du Colombier case OHI: 79*6891d857SDavid du Colombier case OHS: 80*6891d857SDavid du Colombier case OLO: 81*6891d857SDavid du Colombier case OLS: 82*6891d857SDavid du Colombier return 1; 83*6891d857SDavid du Colombier 84*6891d857SDavid du Colombier case ODIV: 85*6891d857SDavid du Colombier case OLDIV: 86*6891d857SDavid du Colombier case OLMOD: 87*6891d857SDavid du Colombier case OMOD: 88*6891d857SDavid du Colombier return 0; 89*6891d857SDavid du Colombier 90*6891d857SDavid du Colombier case OASDIV: 91*6891d857SDavid du Colombier case OASLDIV: 92*6891d857SDavid du Colombier case OASLMOD: 93*6891d857SDavid du Colombier case OASMOD: 94*6891d857SDavid du Colombier return 0; 95*6891d857SDavid du Colombier 96*6891d857SDavid du Colombier } 97*6891d857SDavid du Colombier return 0; 98*6891d857SDavid du Colombier } 99