Changeset 5dcb881 for src/SymTab


Ignore:
Timestamp:
Nov 12, 2021, 11:27:15 AM (2 years ago)
Author:
Andrew Beach <ajbeach@…>
Branches:
ADT, ast-experimental, enum, forall-pointer-decay, master, pthread-emulation, qualifiedEnum
Children:
ce36b55
Parents:
3249dd8b
Message:

Split up the validate pass. (Some statistics code is repeated, but this does not effect regular runs.)

Location:
src/SymTab
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/SymTab/Validate.cc

    r3249dd8b r5dcb881  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Dec 13 23:43:34 2019
    13 // Update Count     : 363
     11// Last Modified By : Andrew Beach
     12// Last Modified On : Fri Nov 12 11:00:00 2021
     13// Update Count     : 364
    1414//
    1515
     
    334334        };
    335335
    336         void validate( std::list< Declaration * > &translationUnit, __attribute__((unused)) bool doDebug ) {
     336        void validate_A( std::list< Declaration * > & translationUnit ) {
    337337                PassVisitor<EnumAndPointerDecay_old> epc;
    338                 PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );
    339                 PassVisitor<ResolveEnumInitializers> rei( nullptr );
    340                 PassVisitor<ForallPointerDecay_old> fpd;
    341                 PassVisitor<CompoundLiteral> compoundliteral;
    342                 PassVisitor<ValidateGenericParameters> genericParams;
    343                 PassVisitor<LabelAddressFixer> labelAddrFixer;
    344338                PassVisitor<HoistTypeDecls> hoistDecls;
    345                 PassVisitor<FixQualifiedTypes> fixQual;
    346 
    347339                {
    348340                        Stats::Heap::newPass("validate-A");
     
    354346                        acceptAll( translationUnit, epc ); // must happen before VerifyCtorDtorAssign, because void return objects should not exist; before LinkReferenceToTypes_old because it is an indexer and needs correct types for mangling
    355347                }
     348        }
     349
     350        void validate_B( std::list< Declaration * > & translationUnit ) {
     351                PassVisitor<LinkReferenceToTypes_old> lrt( nullptr );
     352                PassVisitor<FixQualifiedTypes> fixQual;
    356353                {
    357354                        Stats::Heap::newPass("validate-B");
     
    362359                        EliminateTypedef::eliminateTypedef( translationUnit );
    363360                }
     361        }
     362
     363        void validate_C( std::list< Declaration * > & translationUnit ) {
     364                PassVisitor<ValidateGenericParameters> genericParams;
     365                PassVisitor<ResolveEnumInitializers> rei( nullptr );
    364366                {
    365367                        Stats::Heap::newPass("validate-C");
     
    381383                        });
    382384                }
     385        }
     386
     387        void validate_D( std::list< Declaration * > & translationUnit ) {
     388                PassVisitor<ForallPointerDecay_old> fpd;
    383389                {
    384390                        Stats::Heap::newPass("validate-D");
     
    397403                        });
    398404                }
     405        }
     406
     407        void validate_E( std::list< Declaration * > & translationUnit ) {
     408                PassVisitor<CompoundLiteral> compoundliteral;
    399409                {
    400410                        Stats::Heap::newPass("validate-E");
     
    415425                        }
    416426                }
     427        }
     428
     429        void validate_F( std::list< Declaration * > & translationUnit ) {
     430                PassVisitor<LabelAddressFixer> labelAddrFixer;
    417431                {
    418432                        Stats::Heap::newPass("validate-F");
     
    437451                        }
    438452                }
     453        }
     454
     455        void validate( std::list< Declaration * > &translationUnit, __attribute__((unused)) bool doDebug ) {
     456                validate_A( translationUnit );
     457                validate_B( translationUnit );
     458                validate_C( translationUnit );
     459                validate_D( translationUnit );
     460                validate_E( translationUnit );
     461                validate_F( translationUnit );
    439462        }
    440463
  • src/SymTab/Validate.h

    r3249dd8b r5dcb881  
    3535        void validateType( Type *type, const Indexer *indexer );
    3636
     37        // Sub-passes of validate.
     38        void validate_A( std::list< Declaration * > &translationUnit );
     39        void validate_B( std::list< Declaration * > &translationUnit );
     40        void validate_C( std::list< Declaration * > &translationUnit );
     41        void validate_D( std::list< Declaration * > &translationUnit );
     42        void validate_E( std::list< Declaration * > &translationUnit );
     43        void validate_F( std::list< Declaration * > &translationUnit );
     44
    3745        const ast::Type * validateType(
    3846                const CodeLocation & loc, const ast::Type * type, const ast::SymbolTable & symtab );
Note: See TracChangeset for help on using the changeset viewer.