Ignore:
Timestamp:
Oct 30, 2023, 4:59:34 PM (17 months ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
master
Children:
4ac402d
Parents:
36e6f10
Message:

Simple rework to BasicTypes?-gen.cc to avoid refering to the old ast. No larger rework at this time.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ResolvExpr/CommonType.cc

    r36e6f10 r7d55e4d  
    184184        // GENERATED START, DO NOT EDIT
    185185        // GENERATED BY BasicTypes-gen.cc
    186         #define BT BasicType::
    187         static const BasicType::Kind commonTypes[BasicType::NUMBER_OF_BASIC_TYPES][BasicType::NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor
     186        #define BT ast::BasicType::
     187        static const BT Kind commonTypes[BT NUMBER_OF_BASIC_TYPES][BT NUMBER_OF_BASIC_TYPES] = { // nearest common ancestor
    188188                /*                                      B                       C                      SC                      UC                      SI                     SUI
    189189                                                        I                      UI                      LI                     LUI                     LLI                    LLUI
     
    497497        void CommonType_old::postvisit( BasicType * basicType ) {
    498498                if ( BasicType * otherBasic = dynamic_cast< BasicType * >( type2 ) ) {
    499                         BasicType::Kind newType = commonTypes[ basicType->get_kind() ][ otherBasic->get_kind() ];
     499                        BasicType::Kind newType = (BasicType::Kind)(int)commonTypes[ (ast::BasicType::Kind)(int)basicType->get_kind() ][ (ast::BasicType::Kind)(int)otherBasic->get_kind() ];
    500500                        if ( ( ( newType == basicType->get_kind() && basicType->tq >= otherBasic->tq ) || widenFirst ) && ( ( newType == otherBasic->get_kind() && basicType->tq <= otherBasic->tq ) || widenSecond ) ) {
    501501                                result = new BasicType( basicType->tq | otherBasic->tq, newType );
     
    503503                } else if (  dynamic_cast< ZeroType * >( type2 ) || dynamic_cast< OneType * >( type2 ) ) {
    504504                        // use signed int in lieu of the enum/zero/one type
    505                         BasicType::Kind newType = commonTypes[ basicType->get_kind() ][ BasicType::SignedInt ];
     505                        BasicType::Kind newType = (BasicType::Kind)(int)commonTypes[ (ast::BasicType::Kind)(int)basicType->get_kind() ][ ast::BasicType::SignedInt ];
    506506                        if ( ( ( newType == basicType->get_kind() && basicType->tq >= type2->tq ) || widenFirst ) && ( ( newType != basicType->get_kind() && basicType->tq <= type2->tq ) || widenSecond ) ) {
    507507                                result = new BasicType( basicType->tq | type2->tq, newType );
     
    512512                                result = baseType->clone();
    513513                        } else {
    514                                 BasicType::Kind newType = commonTypes[ basicType->get_kind() ][ BasicType::SignedInt ];
     514                                BasicType::Kind newType = (BasicType::Kind)(int)commonTypes[ (ast::BasicType::Kind)(int)basicType->get_kind() ][ ast::BasicType::SignedInt ];
    515515                                if ( ( ( newType == basicType->get_kind() && basicType->tq >= type2->tq ) || widenFirst ) && ( ( newType != basicType->get_kind() && basicType->tq <= type2->tq ) || widenSecond ) ) {
    516516                                        result = new BasicType( basicType->tq | type2->tq, newType );
     
    700700                                else if (!widen.first) kind = basic->kind; // widen.second
    701701                                else if (!widen.second) kind = basic2->kind;
    702                                 else kind = (ast::BasicType::Kind)(int)commonTypes[ (BasicType::Kind)(int)basic->kind ][ (BasicType::Kind)(int)basic2->kind ];
     702                                else kind = commonTypes[ basic->kind ][ basic2->kind ];
    703703                                // xxx - what does qualifiers even do here??
    704704                                if ( (basic->qualifiers >= basic2->qualifiers || widen.first)
     
    719719                                } else {
    720720                                        #warning remove casts when `commonTypes` moved to new AST
    721                                         ast::BasicType::Kind kind = (ast::BasicType::Kind)(int)commonTypes[ (BasicType::Kind)(int)basic->kind ][ (BasicType::Kind)(int)ast::BasicType::SignedInt ];
     721                                        ast::BasicType::Kind kind = commonTypes[ basic->kind ][ ast::BasicType::SignedInt ];
    722722                                        if (
    723723                                                ( ( kind == basic->kind && basic->qualifiers >= type2->qualifiers )
Note: See TracChangeset for help on using the changeset viewer.