1da51d93aSDavid du Colombier #include "gc.h" 2da51d93aSDavid du Colombier 3da51d93aSDavid du Colombier int machcap(Node * n)4da51d93aSDavid du Colombiermachcap(Node *n) 5da51d93aSDavid du Colombier { 6da51d93aSDavid du Colombier // return 0; 7da51d93aSDavid du Colombier 8da51d93aSDavid du Colombier if(n == Z) 9da51d93aSDavid du Colombier return 1; /* test */ 10da51d93aSDavid du Colombier 11da51d93aSDavid du Colombier switch(n->op) { 12375daca8SDavid du Colombier case OMUL: 13375daca8SDavid du Colombier case OLMUL: 14375daca8SDavid du Colombier case OASMUL: 15375daca8SDavid du Colombier case OASLMUL: 16375daca8SDavid du Colombier if(typechl[n->type->etype]) 17375daca8SDavid du Colombier return 1; 18375daca8SDavid du Colombier if(typev[n->type->etype]) { 19375daca8SDavid du Colombier // if(typev[n->type->etype] && n->right->op == OCONST) { 20375daca8SDavid du Colombier // if(hi64v(n->right) == 0) 21375daca8SDavid du Colombier return 1; 22375daca8SDavid du Colombier } 23375daca8SDavid du Colombier break; 24375daca8SDavid du Colombier 25da51d93aSDavid du Colombier case OCOM: 26da51d93aSDavid du Colombier case ONEG: 27da51d93aSDavid du Colombier case OADD: 28da51d93aSDavid du Colombier case OAND: 29da51d93aSDavid du Colombier case OOR: 30da51d93aSDavid du Colombier case OSUB: 31da51d93aSDavid du Colombier case OXOR: 32da51d93aSDavid du Colombier case OASHL: 33da51d93aSDavid du Colombier case OLSHR: 34da51d93aSDavid du Colombier case OASHR: 35da51d93aSDavid du Colombier if(typechlv[n->left->type->etype]) 36da51d93aSDavid du Colombier return 1; 37da51d93aSDavid du Colombier break; 38375daca8SDavid du Colombier 39da51d93aSDavid du Colombier case OCAST: 40da51d93aSDavid du Colombier if(typev[n->type->etype]) { 41da51d93aSDavid du Colombier if(typechlp[n->left->type->etype]) 42da51d93aSDavid du Colombier return 1; 43da51d93aSDavid du Colombier } 44da51d93aSDavid du Colombier else if(!typefd[n->type->etype]) { 45da51d93aSDavid du Colombier if(typev[n->left->type->etype]) 46da51d93aSDavid du Colombier return 1; 47da51d93aSDavid du Colombier } 48da51d93aSDavid du Colombier break; 49da51d93aSDavid du Colombier 50da51d93aSDavid du Colombier case OCOND: 51da51d93aSDavid du Colombier case OCOMMA: 5290b28401SDavid du Colombier case OLIST: 53da51d93aSDavid du Colombier case OANDAND: 54da51d93aSDavid du Colombier case OOROR: 55da51d93aSDavid du Colombier case ONOT: 56*d40255d8SDavid du Colombier case ODOT: 57da51d93aSDavid du Colombier return 1; 58da51d93aSDavid du Colombier 59da51d93aSDavid du Colombier case OASADD: 60da51d93aSDavid du Colombier case OASSUB: 61da51d93aSDavid du Colombier case OASAND: 62da51d93aSDavid du Colombier case OASOR: 63da51d93aSDavid du Colombier case OASXOR: 64da51d93aSDavid du Colombier return 1; 65da51d93aSDavid du Colombier 66da51d93aSDavid du Colombier case OASASHL: 67da51d93aSDavid du Colombier case OASASHR: 68da51d93aSDavid du Colombier case OASLSHR: 69da51d93aSDavid du Colombier return 1; 70da51d93aSDavid du Colombier 71da51d93aSDavid du Colombier case OPOSTINC: 72da51d93aSDavid du Colombier case OPOSTDEC: 73da51d93aSDavid du Colombier case OPREINC: 74da51d93aSDavid du Colombier case OPREDEC: 75da51d93aSDavid du Colombier return 1; 76da51d93aSDavid du Colombier 77da51d93aSDavid du Colombier case OEQ: 78da51d93aSDavid du Colombier case ONE: 79da51d93aSDavid du Colombier case OLE: 80da51d93aSDavid du Colombier case OGT: 81da51d93aSDavid du Colombier case OLT: 82da51d93aSDavid du Colombier case OGE: 83da51d93aSDavid du Colombier case OHI: 84da51d93aSDavid du Colombier case OHS: 85da51d93aSDavid du Colombier case OLO: 86da51d93aSDavid du Colombier case OLS: 87da51d93aSDavid du Colombier //print("%O\n", n->op); 88da51d93aSDavid du Colombier return 1; 89da51d93aSDavid du Colombier } 90da51d93aSDavid du Colombier return 0; 91da51d93aSDavid du Colombier } 92