static SYMBOL inlineSymbol( // CREATE TRANSLATION SYMBOL IF REQ'D SYMBOL sym ) // - original symbol { SYMBOL old; // - same as "sym" FN_CTL* fctl; // - current file control fctl = FnCtlTop(); if( sym == fctl->this_sym ) { return( sym ); } if( sym == fctl->cdtor_sym ) { return( sym ); } if( CgBackInlinedDepth() > 0 && ! SymIsFunction( sym ) && ! SymIsStaticData( sym ) ) { old = sym; sym = push_inline_sym( old ); SymTransPush( old, sym ); // code used to only have SymIsCatchAlias so we // make sure SymIsAlias includes SymIsCatchAlias DbgAssert( ! SymIsCatchAlias( sym ) || ( SymIsCatchAlias( sym ) && SymIsAlias( sym ) ) ); if( SymIsAlias( sym ) || SymIsAnonymousMember( sym ) ) { if( SymIsAutomatic( sym ) ) { sym->u.alias = SymTrans( sym->u.alias ); } } } return( sym ); }
back_handle FEBack( // GET BACK HANDLE FOR A SYMBOL SYMBOL sym ) // - the symbol { SCOPE scope; // - scope for symbol SYMBOL check_sym; // - SYMBOL temp void* cg_handle; // - handle for symbol #ifndef NDEBUG SYMBOL orig // - original symbol = sym; #endif check_sym = SymIsAnonymous( sym ); if( check_sym != NULL ) { sym = check_sym; } if( sym->flag2 & SF2_CG_HANDLE ) { cg_handle = sym->locn->u.cg_handle; } else { cg_handle = BENewBack( (cg_sym_handle)sym ); if( NULL != cg_handle ) { SYM_TOKEN_LOCN* locn = SymbolLocnAlloc( &sym->locn ); locn->u.cg_handle = cg_handle; scope = SymScope( sym ); if( scope != NULL ) { switch( scope->id ) { case SCOPE_CLASS : cgBackStatHandleAdd( sym ); break; case SCOPE_FUNCTION : case SCOPE_BLOCK : if( SymIsStaticData( sym ) ) { cgBackStatHandleAdd( sym ); } break; } } sym->flag2 &= ~SF2_HDL_MASK; sym->flag2 |= SF2_CG_HANDLE; } } #ifndef NDEBUG if( PragDbgToggle.auxinfo ) { printf( "FEBack( %p ) -> bh[%p]\n", orig, cg_handle ); } #endif return cg_handle; }
bool CgDeclSkippableConstObj( // DETERMINE IF SKIPPABLE CONST OBJ SYMBOL sym ) // - symbol { if( SymAddrTaken( sym ) ) { return( false ); } if( SymIsAutomatic( sym ) && ( GenSwitches & DBG_LOCALS ) ) { // if we are debugging locals; don't skip initialization return( false ); } if( SymIsConstantInt( sym ) ) { return( true ); } if( SymIsConstantNoCode( sym ) && ! SymIsReferenced( sym ) ) { if( SymIsStaticData( sym ) ) { return( true ); } } return( false ); }