void CondInfoDirectFlags( // SET FOR DIRECT-FLAGS PROCESSING unsigned flag_bytes ) // - # bytes of flags required { if( flag_bytes > 0 ) { dtor_cond_sym = CgVarTemp( flag_bytes ); } else { dtor_cond_sym = NULL; } }
static SYMBOL getExprTempSym( // EMIT CGDone, CGTrash, OR COPY TO TEMP cg_name expr, // - expression cg_type type, // - type of expression FN_CTL* fctl, // - function control DGRP_FLAGS pop_type ) // - type of popping destruction { SYMBOL temp; // - NULL or copied temp if( pop_type & DGRP_DONE ) { CGDone( expr ); temp = NULL; } else if( pop_type & DGRP_TRASH ) { CGTrash( expr ); temp = NULL; } else if( fctl->temp_dtoring ) { temp = CgVarTemp( BETypeLength( type ) ); CGDone( CGLVAssign( CgSymbol( temp ), expr, type ) ); } else { temp = NULL; } fctl->temp_dtoring = FALSE; return temp; }