Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon

Microcode of one basic block. More...

#include <hexrays.hpp>

Public Member Functions

void mark_lists_dirty ()
 
void request_propagation ()
 
bool needs_propagation () const
 
void request_demote64 ()
 
bool lists_dirty () const
 
bool lists_ready () const
 
int make_lists_ready ()
 
int npred () const
 Get number of block predecessors. More...
 
int nsucc () const
 Get number of block successors. More...
 
int pred (int n) const
 
int succ (int n) const
 
bool empty () const
 
void print (vd_printer_t &vp) const
 Print block contents. More...
 
void dump () const
 Dump block info. More...
 
void vdump_block (const char *title, va_list va) const
 
void dump_block (const char *title,...) const
 
minsn_tinsert_into_block (minsn_t *nm, minsn_t *om)
 Insert instruction into the doubly linked list. More...
 
minsn_tremove_from_block (minsn_t *m)
 Remove instruction from the doubly linked list. More...
 
int for_all_insns (minsn_visitor_t &mv)
 Visit all instructions. More...
 
int for_all_ops (mop_visitor_t &mv)
 Visit all operands. More...
 
int for_all_uses (mlist_t *list, minsn_t *i1, minsn_t *i2, mlist_mop_visitor_t &mmv)
 Visit all operands that use LIST. More...
 
int optimize_insn (minsn_t *m, int optflags=OPTI_MINSTKREF|OPTI_COMBINSNS)
 Optimize one instruction in the context of the block. More...
 
int optimize_block ()
 Optimize a basic block. More...
 
int build_lists (bool kill_deads)
 Build def-use lists and eliminate deads. More...
 
int optimize_useless_jump ()
 Remove a jump at the end of the block if it is useless. More...
 
void append_use_list (mlist_t *list, const mop_t &op, maymust_t maymust, bitrange_t mask=MAXRANGE) const
 Append use-list of an operand. More...
 
void append_def_list (mlist_t *list, const mop_t &op, maymust_t maymust) const
 Append def-list of an operand. More...
 
mlist_t build_use_list (const minsn_t &ins, maymust_t maymust) const
 Build use-list of an instruction. More...
 
mlist_t build_def_list (const minsn_t &ins, maymust_t maymust) const
 Build def-list of an instruction. More...
 
bool is_used (mlist_t *list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 Is the list used by the specified instruction range? More...
 
const minsn_tfind_first_use (mlist_t *list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 Find the first insn that uses the specified list in the insn range. More...
 
minsn_tfind_first_use (mlist_t *list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 
bool is_redefined (const mlist_t &list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 Is the list redefined by the specified instructions? More...
 
const minsn_tfind_redefinition (const mlist_t &list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 Find the first insn that redefines any part of the list in the insn range. More...
 
minsn_tfind_redefinition (const mlist_t &list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
 
bool is_rhs_redefined (const minsn_t *ins, const minsn_t *i1, const minsn_t *i2) const
 Is the right hand side of the instruction redefined the insn range? "right hand side" corresponds to the source operands of the instruction. More...
 
minsn_tfind_access (const mop_t &op, minsn_t **parent, const minsn_t *mend, int fdflags) const
 Find the instruction that accesses the specified operand. More...
 
minsn_tfind_def (const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
 
minsn_tfind_use (const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
 
bool get_valranges (valrng_t *res, const vivl_t &vivl, int vrflags) const
 Find possible values for a block. More...
 
bool get_valranges (valrng_t *res, const vivl_t &vivl, const minsn_t *m, int vrflags) const
 Find possible values for an instruction. More...
 
void make_nop (minsn_t *m)
 Erase the instruction (convert it to nop) and mark the lists dirty. More...
 
size_t get_reginsn_qty () const
 Calculate number of regular instructions in the block. More...
 
bool is_call_block () const
 
bool is_unknown_call () const
 
bool is_nway () const
 
bool is_branch () const
 
bool is_simple_goto_block () const
 
bool is_simple_jcnd_block () const
 

Public Attributes

mblock_tnextb
 next block in the doubly linked list More...
 
mblock_tprevb
 previous block in the doubly linked list More...
 
uint32 flags
 combination of Basic block properties bits More...
 
ea_t start
 start address More...
 
ea_t end
 end address note: we cannot rely on start/end addresses very much because instructions are propagated between blocks More...
 
minsn_thead
 pointer to the first instruction of the block More...
 
minsn_ttail
 pointer to the last instruction of the block More...
 
mba_tmba
 the parent micro block array More...
 
int serial
 block number More...
 
mblock_type_t type
 block type (BLT_NONE - not computed yet) More...
 
mlist_t dead_at_start
 data that is dead at the block entry More...
 
mlist_t mustbuse
 data that must be used by the block More...
 
mlist_t maybuse
 data that may be used by the block More...
 
mlist_t mustbdef
 data that must be defined by the block More...
 
mlist_t maybdef
 data that may be defined by the block More...
 
mlist_t dnu
 data that is defined but not used in the block More...
 
sval_t maxbsp
 maximal sp value in the block (0...stacksize) More...
 
sval_t minbstkref
 lowest stack location accessible with indirect addressing (offset from the stack bottom) initially it is 0 (not computed) More...
 
sval_t minbargref
 the same for arguments More...
 
intvec_t predset
 control flow graph: list of our predecessors use npred() and pred() to access it More...
 
intvec_t succset
 control flow graph: list of our successors use nsucc() and succ() to access it More...
 
char reserved []
 

Friends

class codegen_t
 

Detailed Description

Microcode of one basic block.

All blocks are part of a doubly linked list. They can also be addressed by indexing the mba->natural array. A block contains a doubly linked list of instructions, various location lists that are used for data flow analysis, and other attributes.

Examples
hexrays_sample10.cpp, hexrays_sample11.cpp, hexrays_sample12.cpp, hexrays_sample15.cpp, hexrays_sample16.cpp, and hexrays_sample18.cpp.

Definition at line 3804 of file hexrays.hpp.

Member Function Documentation

◆ append_def_list()

void mblock_t::append_def_list ( mlist_t list,
const mop_t op,
maymust_t  maymust 
) const

Append def-list of an operand.

This function calculates list of locations that may or must be modified by the operand and appends it to LIST.

Parameters
listptr to the output buffer. we will append to it.
opoperand to calculate the def list of
maymustshould we calculate 'may-def' or 'must-def' list? see maymust_t for more details.

Definition at line 11143 of file hexrays.hpp.

◆ append_use_list()

void mblock_t::append_use_list ( mlist_t list,
const mop_t op,
maymust_t  maymust,
bitrange_t  mask = MAXRANGE 
) const

Append use-list of an operand.

This function calculates list of locations that may or must be used by the operand and appends it to LIST.

Parameters
listptr to the output buffer. we will append to it.
opoperand to calculate the use list of
maymustshould we calculate 'may-use' or 'must-use' list? see maymust_t for more details.
maskif only part of the operand should be considered, a bitmask can be used to specify which part. example: op=AX,mask=0xFF means that we will consider only AL.

Definition at line 11137 of file hexrays.hpp.

◆ build_def_list()

mlist_t mblock_t::build_def_list ( const minsn_t ins,
maymust_t  maymust 
) const

Build def-list of an instruction.

This function calculates list of locations that may or must be modified by the instruction. Examples: "stx ebx.4, ds.2, eax.4", may-list: all aliasable memory "stx ebx.4, ds.2, eax.4", must-list: empty Since STX uses EAX for indirect access, it may modify any aliasable memory. On the other hand, we cannot tell for sure which memory cells will be modified, this is why the must-list is empty.

Parameters
insinstruction to calculate the def list of
maymustshould we calculate 'may-def' or 'must-def' list? see maymust_t for more details.
Returns
the calculated def-list
Examples
hexrays_sample12.cpp, hexrays_sample15.cpp, and hexrays_sample16.cpp.

Definition at line 11157 of file hexrays.hpp.

◆ build_lists()

int mblock_t::build_lists ( bool  kill_deads)

Build def-use lists and eliminate deads.

Parameters
kill_deadsdo delete dead instructions?
Returns
the number of eliminated instructions Better mblock_t::call make_lists_ready() rather than this function.

Definition at line 11125 of file hexrays.hpp.

◆ build_use_list()

mlist_t mblock_t::build_use_list ( const minsn_t ins,
maymust_t  maymust 
) const

Build use-list of an instruction.

This function calculates list of locations that may or must be used by the instruction. Examples: "ldx ds.2, eax.4, ebx.4", may-list: all aliasable memory "ldx ds.2, eax.4, ebx.4", must-list: empty Since LDX uses EAX for indirect access, it may access any aliasable memory. On the other hand, we cannot tell for sure which memory cells will be accessed, this is why the must-list is empty.

Parameters
insinstruction to calculate the use list of
maymustshould we calculate 'may-use' or 'must-use' list? see maymust_t for more details.
Returns
the calculated use-list
Examples
hexrays_sample12.cpp, hexrays_sample15.cpp, and hexrays_sample16.cpp.

Definition at line 11149 of file hexrays.hpp.

◆ dump()

void mblock_t::dump ( ) const

Dump block info.

This function is useful for debugging, see mba_t::dump for info

Definition at line 11071 of file hexrays.hpp.

◆ dump_block()

void mblock_t::dump_block ( const char *  title,
  ... 
) const

Definition at line 3903 of file hexrays.hpp.

◆ empty()

bool mblock_t::empty ( ) const

Definition at line 3892 of file hexrays.hpp.

◆ find_access()

minsn_t * mblock_t::find_access ( const mop_t op,
minsn_t **  parent,
const minsn_t mend,
int  fdflags 
) const

Find the instruction that accesses the specified operand.

This function search inside one block.

Parameters
opoperand to search for
parentptr to ptr to a top level instruction. denotes the beginning of the search range.
mendend instruction of the range (must be a top level insn) mend is excluded from the range. it can be specified as nullptr. parent and mend must belong to the same block.
fdflagscombination of bits for mblock_t::find_access bits
Returns
the instruction that accesses the operand. this instruction may be a sub-instruction. to find out the top level instruction, check out *p_i1. nullptr means 'not found'.

Definition at line 11183 of file hexrays.hpp.

◆ find_def()

minsn_t * mblock_t::find_def ( const mop_t op,
minsn_t **  p_i1,
const minsn_t i2,
int  fdflags 
)

Definition at line 4169 of file hexrays.hpp.

◆ find_first_use() [1/2]

const minsn_t * mblock_t::find_first_use ( mlist_t list,
const minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Find the first insn that uses the specified list in the insn range.

Parameters
listlist of locations. LIST may be modified by the function: redefined locations will be removed from it.
i1starting instruction of the range (must be a top level insn)
i2end instruction of the range (must be a top level insn) i2 is excluded from the range. it can be specified as nullptr. i1 and i2 must belong to the same block.
maymustshould we search in 'may-access' or 'must-access' mode?
Returns
pointer to such instruction or nullptr. Upon return LIST will contain only locations not redefined by insns [i1..result]

Definition at line 11165 of file hexrays.hpp.

◆ find_first_use() [2/2]

minsn_t * mblock_t::find_first_use ( mlist_t list,
minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Definition at line 4082 of file hexrays.hpp.

◆ find_redefinition() [1/2]

const minsn_t * mblock_t::find_redefinition ( const mlist_t list,
const minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Find the first insn that redefines any part of the list in the insn range.

Parameters
listlist of locations to check.
i1starting instruction of the range (must be a top level insn)
i2end instruction of the range (must be a top level insn) i2 is excluded from the range. it can be specified as nullptr. i1 and i2 must belong to the same block.
maymustshould we search in 'may-access' or 'must-access' mode?
Returns
pointer to such instruction or nullptr.

Definition at line 11171 of file hexrays.hpp.

◆ find_redefinition() [2/2]

minsn_t * mblock_t::find_redefinition ( const mlist_t list,
minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Definition at line 4119 of file hexrays.hpp.

◆ find_use()

minsn_t * mblock_t::find_use ( const mop_t op,
minsn_t **  p_i1,
const minsn_t i2,
int  fdflags 
)

Definition at line 4177 of file hexrays.hpp.

◆ for_all_insns()

int mblock_t::for_all_insns ( minsn_visitor_t mv)

Visit all instructions.

This function visits subinstructions too.

Parameters
mvinstruction visitor
Returns
zero or the value returned by mv.visit_insn() See also mba_t::for_all_topinsns()

Definition at line 11095 of file hexrays.hpp.

◆ for_all_ops()

int mblock_t::for_all_ops ( mop_visitor_t mv)

Visit all operands.

This function visit subinstruction operands too.

Parameters
mvoperand visitor
Returns
zero or the value returned by mv.visit_mop()

Definition at line 11101 of file hexrays.hpp.

◆ for_all_uses()

int mblock_t::for_all_uses ( mlist_t list,
minsn_t i1,
minsn_t i2,
mlist_mop_visitor_t mmv 
)

Visit all operands that use LIST.

Parameters
listptr to the list of locations. it may be modified: parts that get redefined by the instructions in [i1,i2) will be deleted.
i1starting instruction. must be a top level insn.
i2ending instruction (excluded). must be a top level insn.
mmvoperand visitor
Returns
zero or the value returned by mmv.visit_mop()

Definition at line 11107 of file hexrays.hpp.

◆ get_reginsn_qty()

size_t mblock_t::get_reginsn_qty ( ) const

Calculate number of regular instructions in the block.

Assertions are skipped by this function.

Returns
Number of non-assertion instructions in the block.

Definition at line 11201 of file hexrays.hpp.

◆ get_valranges() [1/2]

bool mblock_t::get_valranges ( valrng_t res,
const vivl_t vivl,
const minsn_t m,
int  vrflags 
) const

Find possible values for an instruction.

Parameters
resset of value ranges
vivlwhat to search for
minsn to search value ranges at.
See also
bits for get_valranges bits
Parameters
vrflagscombination of bits for get_valranges bits

Definition at line 11195 of file hexrays.hpp.

◆ get_valranges() [2/2]

bool mblock_t::get_valranges ( valrng_t res,
const vivl_t vivl,
int  vrflags 
) const

Find possible values for a block.

Parameters
resset of value ranges
vivlwhat to search for
vrflagscombination of bits for get_valranges bits
Examples
hexrays_sample15.cpp.

Definition at line 11189 of file hexrays.hpp.

◆ insert_into_block()

minsn_t * mblock_t::insert_into_block ( minsn_t nm,
minsn_t om 
)

Insert instruction into the doubly linked list.

Parameters
nmnew instruction
omexisting instruction, part of the doubly linked list if nullptr, then the instruction will be inserted at the beginning of the list NM will be inserted immediately after OM
Returns
pointer to NM

Definition at line 11083 of file hexrays.hpp.

◆ is_branch()

bool mblock_t::is_branch ( ) const

Definition at line 4230 of file hexrays.hpp.

◆ is_call_block()

bool mblock_t::is_call_block ( ) const

Definition at line 4227 of file hexrays.hpp.

◆ is_nway()

bool mblock_t::is_nway ( ) const

Definition at line 4229 of file hexrays.hpp.

◆ is_redefined()

bool mblock_t::is_redefined ( const mlist_t list,
const minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Is the list redefined by the specified instructions?

Parameters
listlist of locations to check.
i1starting instruction of the range (must be a top level insn)
i2end instruction of the range (must be a top level insn) i2 is excluded from the range. it can be specified as nullptr. i1 and i2 must belong to the same block.
maymustshould we search in 'may-access' or 'must-access' mode?

Definition at line 4097 of file hexrays.hpp.

◆ is_rhs_redefined()

bool mblock_t::is_rhs_redefined ( const minsn_t ins,
const minsn_t i1,
const minsn_t i2 
) const

Is the right hand side of the instruction redefined the insn range? "right hand side" corresponds to the source operands of the instruction.

Parameters
insinstruction to consider
i1starting instruction of the range (must be a top level insn)
i2end instruction of the range (must be a top level insn) i2 is excluded from the range. it can be specified as nullptr. i1 and i2 must belong to the same block.

Definition at line 11177 of file hexrays.hpp.

◆ is_simple_goto_block()

bool mblock_t::is_simple_goto_block ( ) const

Definition at line 4231 of file hexrays.hpp.

◆ is_simple_jcnd_block()

bool mblock_t::is_simple_jcnd_block ( ) const

Definition at line 4237 of file hexrays.hpp.

◆ is_unknown_call()

bool mblock_t::is_unknown_call ( ) const

Definition at line 4228 of file hexrays.hpp.

◆ is_used()

bool mblock_t::is_used ( mlist_t list,
const minsn_t i1,
const minsn_t i2,
maymust_t  maymust = MAY_ACCESS 
) const

Is the list used by the specified instruction range?

Parameters
listlist of locations. LIST may be modified by the function: redefined locations will be removed from it.
i1starting instruction of the range (must be a top level insn)
i2end instruction of the range (must be a top level insn) i2 is excluded from the range. it can be specified as nullptr. i1 and i2 must belong to the same block.
maymustshould we search in 'may-access' or 'must-access' mode?

Definition at line 4067 of file hexrays.hpp.

◆ lists_dirty()

bool mblock_t::lists_dirty ( ) const

Definition at line 3871 of file hexrays.hpp.

◆ lists_ready()

bool mblock_t::lists_ready ( ) const

Definition at line 3872 of file hexrays.hpp.

◆ make_lists_ready()

int mblock_t::make_lists_ready ( )

Definition at line 3873 of file hexrays.hpp.

◆ make_nop()

void mblock_t::make_nop ( minsn_t m)

Erase the instruction (convert it to nop) and mark the lists dirty.

This is the recommended function to use because it also marks the block use-def lists dirty.

Definition at line 4220 of file hexrays.hpp.

References minsn_t::_make_nop().

◆ mark_lists_dirty()

void mblock_t::mark_lists_dirty ( )

Definition at line 3867 of file hexrays.hpp.

◆ needs_propagation()

bool mblock_t::needs_propagation ( ) const

Definition at line 3869 of file hexrays.hpp.

◆ npred()

int mblock_t::npred ( ) const

Get number of block predecessors.

Definition at line 3881 of file hexrays.hpp.

◆ nsucc()

int mblock_t::nsucc ( ) const

Get number of block successors.

Definition at line 3883 of file hexrays.hpp.

◆ optimize_block()

int mblock_t::optimize_block ( )

Optimize a basic block.

Usually there is no need to call this function explicitly because the decompiler will call it itself if optinsn_t::func or optblock_t::func return non-zero.

Returns
number of changes made to the block

Definition at line 11119 of file hexrays.hpp.

◆ optimize_insn()

int mblock_t::optimize_insn ( minsn_t m,
int  optflags = OPTI_MINSTKREF|OPTI_COMBINSNS 
)

Optimize one instruction in the context of the block.

Parameters
mpointer to a top level instruction
optflagscombination of optimization flags bits
Returns
number of changes made to the block This function may change other instructions in the block too. However, it will not destroy top level instructions (it may convert them to nop's). This function performs only intrablock modifications. See also minsn_t::optimize_solo()

Definition at line 11113 of file hexrays.hpp.

◆ optimize_useless_jump()

int mblock_t::optimize_useless_jump ( )

Remove a jump at the end of the block if it is useless.

This function preserves any side effects when removing a useless jump. Both conditional and unconditional jumps are handled (and jtbl too). This function deletes useless jumps, not only replaces them with a nop. (please note that \optimize_insn does not handle useless jumps).

Returns
number of changes made to the block

Definition at line 11131 of file hexrays.hpp.

◆ pred()

int mblock_t::pred ( int  n) const

Definition at line 3885 of file hexrays.hpp.

◆ print()

void mblock_t::print ( vd_printer_t vp) const

Print block contents.

Parameters
vpprint helpers class. it can be used to direct the printed info to any destination

Definition at line 11065 of file hexrays.hpp.

◆ remove_from_block()

minsn_t * mblock_t::remove_from_block ( minsn_t m)

Remove instruction from the doubly linked list.

Parameters
minstruction to remove The removed instruction is not deleted, the caller gets its ownership
Returns
pointer to the next instruction

Definition at line 11089 of file hexrays.hpp.

◆ request_demote64()

void mblock_t::request_demote64 ( )

Definition at line 3870 of file hexrays.hpp.

◆ request_propagation()

void mblock_t::request_propagation ( )

Definition at line 3868 of file hexrays.hpp.

◆ succ()

int mblock_t::succ ( int  n) const

Definition at line 3887 of file hexrays.hpp.

◆ vdump_block()

void mblock_t::vdump_block ( const char *  title,
va_list  va 
) const

Definition at line 11077 of file hexrays.hpp.

Friends And Related Function Documentation

◆ codegen_t

friend class codegen_t
friend

Definition at line 3806 of file hexrays.hpp.

Member Data Documentation

◆ dead_at_start

mlist_t mblock_t::dead_at_start

data that is dead at the block entry

Definition at line 3846 of file hexrays.hpp.

◆ dnu

mlist_t mblock_t::dnu

data that is defined but not used in the block

Definition at line 3851 of file hexrays.hpp.

◆ end

ea_t mblock_t::end

end address note: we cannot rely on start/end addresses very much because instructions are propagated between blocks

Definition at line 3836 of file hexrays.hpp.

◆ flags

uint32 mblock_t::flags

combination of Basic block properties bits

Definition at line 3812 of file hexrays.hpp.

◆ head

minsn_t* mblock_t::head

pointer to the first instruction of the block

Examples
hexrays_sample11.cpp, and hexrays_sample12.cpp.

Definition at line 3840 of file hexrays.hpp.

◆ maxbsp

sval_t mblock_t::maxbsp

maximal sp value in the block (0...stacksize)

Definition at line 3853 of file hexrays.hpp.

◆ maybdef

mlist_t mblock_t::maybdef

data that may be defined by the block

Definition at line 3850 of file hexrays.hpp.

◆ maybuse

mlist_t mblock_t::maybuse

data that may be used by the block

Definition at line 3848 of file hexrays.hpp.

◆ mba

mba_t* mblock_t::mba

the parent micro block array

Examples
hexrays_sample11.cpp.

Definition at line 3842 of file hexrays.hpp.

◆ minbargref

sval_t mblock_t::minbargref

the same for arguments

Definition at line 3857 of file hexrays.hpp.

◆ minbstkref

sval_t mblock_t::minbstkref

lowest stack location accessible with indirect addressing (offset from the stack bottom) initially it is 0 (not computed)

Definition at line 3854 of file hexrays.hpp.

◆ mustbdef

mlist_t mblock_t::mustbdef

data that must be defined by the block

Definition at line 3849 of file hexrays.hpp.

◆ mustbuse

mlist_t mblock_t::mustbuse

data that must be used by the block

Definition at line 3847 of file hexrays.hpp.

◆ nextb

mblock_t* mblock_t::nextb

next block in the doubly linked list

Definition at line 3810 of file hexrays.hpp.

◆ predset

intvec_t mblock_t::predset

control flow graph: list of our predecessors use npred() and pred() to access it

Examples
hexrays_sample11.cpp.

Definition at line 3859 of file hexrays.hpp.

◆ prevb

mblock_t* mblock_t::prevb

previous block in the doubly linked list

Definition at line 3811 of file hexrays.hpp.

◆ reserved

char mblock_t::reserved[]

Definition at line 3865 of file hexrays.hpp.

◆ serial

int mblock_t::serial

block number

Examples
hexrays_sample11.cpp, and hexrays_sample12.cpp.

Definition at line 3843 of file hexrays.hpp.

◆ start

ea_t mblock_t::start

start address

Examples
hexrays_sample15.cpp.

Definition at line 3835 of file hexrays.hpp.

◆ succset

intvec_t mblock_t::succset

control flow graph: list of our successors use nsucc() and succ() to access it

Examples
hexrays_sample11.cpp.

Definition at line 3861 of file hexrays.hpp.

◆ tail

minsn_t* mblock_t::tail

pointer to the last instruction of the block

Examples
hexrays_sample11.cpp, and hexrays_sample12.cpp.

Definition at line 3841 of file hexrays.hpp.

◆ type

mblock_type_t mblock_t::type

block type (BLT_NONE - not computed yet)

Definition at line 3844 of file hexrays.hpp.