extern bool CvtOk( type_class_def fr, type_class_def to ) /***********************************************************/ { if( fr == XX ) return( false ); if( to == XX ) return( false ); if( AskHow( fr, to ) != BAD ) return( true ); return( false ); }
extern bool CvtOk( type_class_def fr, type_class_def to ) { /************************************************************** return true if a conversion from "fr" to "to" can be done */ if( fr == XX ) return( false ); if( to == XX ) return( false ); if( AskHow( fr, to ) != BAD ) return( true ); return( false ); }
extern bool CvtOk( type_class_def fr, type_class_def to ) { /************************************************************** return true if a conversion from "fr" to "to" can be done */ if( fr == XX ) return( FALSE ); if( to == XX ) return( FALSE ); if( AskHow( fr, to ) != NA ) return( TRUE ); return( FALSE ); }
name *temp; instruction *new_ins; conv_method how; src = ins->operands[ 0 ]; dst = ins->result; if( src->n.name_class != XX && ins->base_type_class == XX ) { ins->base_type_class = src->n.name_class; } ins->head.state = INS_NEEDS_WORK; if( src->n.class == N_CONSTANT && src->c.const_type == CONS_ABSOLUTE && ins->type_class != XX ) { src = TrimConst( src, ins->base_type_class ); how = OK; } else { how = AskHow( ins->base_type_class, ins->type_class ); } if( how < NA ) { temp = AllocTemp( how ); new_ins = MakeConvert( src, temp, how, ins->base_type_class ); ins->operands[ 0 ] = temp; ins->base_type_class = how; new_ins->table = NULL; PrefixIns( ins, new_ins ); UpdateLive( new_ins, ins ); } else if( how < LST && how > OK ) { new_ins = ConvertRoutines[ how - OK - 1 ]( ins ); } else { new_ins = MakeMove( src, dst, ins->type_class ); ReplIns( ins, new_ins ); if( how != OK ) {
extern void LookupConvertRoutine( instruction *ins ) { /********************************************************/ RoutineNum = AskHow( ins->base_type_class, ins->type_class ) - BEG_RTNS; }