void FiniSubProg( void ) { FrlFini( &ITPool ); CheckCSList( CS_EMPTY_LIST ); // all control structures should be finished if( !Remember.endstmt ) { Error( EN_NO_END ); } if( ( SgmtSw & SG_SYMTAB_RESOLVED ) == 0 ) { STResolve(); SgmtSw |= SG_SYMTAB_RESOLVED; } if(( ProgSw & PS_BLOCK_DATA ) != 0 ) { GEndBlockData(); } else if(( ProgSw & PS_IN_SUBPROGRAM ) != 0 ) { Epilogue(); } else if( ( ProgSw & PS_ERROR ) == 0 ) { GReturn(); } DumpEntries(); BIResolveUndefTypes(); STDump(); TDSubFini(); BIEndSubProg(); EnPurge(); // Must come after TDSubFini() for optimizing compiler SubProgId = NULL; }
void PurgeAll( void ) { STPurge(); ITPurge(); CSPurge(); IOPurge(); EnPurge(); EqPurge(); TDPurge(); FiniMacroProcessor(); }