forsyth20121205-174063a80cc13 years agoHistory
78 lines · 903 B · C
RawDownload
#include "gc.h" intmachcap(Node *n){ 	if(n == Z)		return 1;	/* test */ 	switch(n->op) {	case OMUL:	case OLMUL:	case OASMUL:	case OASLMUL:		if(typechl[n->type->etype])			return 1;		if(typev[n->type->etype]) {				return 1;		}		break; 	case OCOM:	case ONEG:	case OADD:	case OAND:	case OOR:	case OSUB:	case OXOR:	case OASHL:	case OLSHR:	case OASHR:		if(typechlv[n->left->type->etype])			return 1;		break; 	case OCAST:		return 1; 	case OCOND:	case OCOMMA:	case OLIST:	case OANDAND:	case OOROR:	case ONOT:		return 1; 	case OASADD:	case OASSUB:	case OASAND:	case OASOR:	case OASXOR:		return 1; 	case OASASHL:	case OASASHR:	case OASLSHR:		return 1; 	case OPOSTINC:	case OPOSTDEC:	case OPREINC:	case OPREDEC:		return 1; 	case OEQ:	case ONE:	case OLE:	case OGT:	case OLT:	case OGE:	case OHI:	case OHS:	case OLO:	case OLS:		return 1;	}	return 0;}