Skip to main content

drreg_bb_properties_t_DRREG_IGNORE_CONTROL_FLOW

Constant drreg_bb_properties_t_DRREG_IGNORE_CONTROL_FLOW 

Source
pub const drreg_bb_properties_t_DRREG_IGNORE_CONTROL_FLOW: drreg_bb_properties_t = 2;
Expand description

drreg was designed for linear control flow. Normally, drreg disables optimizations if it sees any kind of internal control flow (viz., a branch with an instr_t target) that was added during drmgr’s app2app phase, which includes flow added by drutil_expand_rep_string(). The primary consequence of disabling optimizations means that application instructions become barriers to spilled scratch registers that have been unreserved but have not yet been lazily restored, which are restored prior to each application instruction. If this flag is set, drreg assumes that internal control flow either does not cross application instructions or that the client is ensuring that each forward jump contains the same set of saved scratch registers at its source and target (typically done by saving all scratch registers needed inside control flow prior to any forward branches). Such scratch registers are then restored prior to each application instruction.