extern void PushInSameBlock( instruction *ins ) { /***************************************************/ #if ( _TARGET & _TARG_IAPX86 ) ins = ins; #else while( ins->head.opcode != OP_BLOCK ) { ins = ins->head.next; } if( _BLOCK( ins ) != CurrBlock ) { CurrProc->targ.never_sp_frame = true; } #endif }
static instruction *FindPreviousIns( instruction *curr ) /******************************************************* Return the instruction which would be executed immediately prior to the given instruction, ignoring block boundaries and other such trivia. Uses the MARKED flag to determine which, of all possible input sources, to select. */ { instruction *prev; block *blk; block_edge *edge; prev = curr->head.prev; if( prev->head.opcode == OP_BLOCK ) { blk = _BLOCK( prev ); edge = blk->input_edges; while( edge != NULL ) { if( edge->source->class & BLOCK_MARKED ) break; edge = edge->next_source; } prev = edge->source->ins.hd.prev; }