Пример #1
0
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 );
}
Пример #2
0
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 );
}
Пример #3
0
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 );
}
Пример #4
0
    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 ) {
Пример #5
0
extern  void    LookupConvertRoutine( instruction *ins ) {
/********************************************************/

    RoutineNum = AskHow( ins->base_type_class, ins->type_class ) - BEG_RTNS;
}