本文整理汇总了C++中IR::get_bb方法的典型用法代码示例。如果您正苦于以下问题:C++ IR::get_bb方法的具体用法?C++ IR::get_bb怎么用?C++ IR::get_bb使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IR
的用法示例。
在下文中一共展示了IR::get_bb方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: verify
//Check that all basic blocks should only end with terminator IR.
void IRBB::verify()
{
UINT c = 0;
C<IR*> * ct;
for (IR * ir = BB_irlist(this).get_head(&ct);
ir != NULL; ir = BB_irlist(this).get_next(&ct)) {
ASSERT0(ir->is_single());
ASSERT0(ir->get_bb() == this);
switch (IR_code(ir)) {
case IR_ST:
case IR_STPR:
case IR_STARRAY:
case IR_IST:
case IR_PHI:
case IR_REGION:
case IR_CALL:
case IR_ICALL:
case IR_GOTO:
case IR_IGOTO:
case IR_TRUEBR:
case IR_FALSEBR:
case IR_RETURN:
case IR_SWITCH:
break;
default: ASSERT(0, ("BB does not supported this kind of IR."));
}
if (is_bb_down_boundary(ir)) {
ASSERT(ir == BB_last_ir(this), ("invalid BB down boundary."));
}
c++;
}
ASSERT0(c == getNumOfIR());
}
示例2: dump
void IRBB::dump(Region * ru)
{
if (g_tfile == NULL) { return; }
g_indent = 0;
fprintf(g_tfile, "\n----- BB%d ------", BB_id(this));
if (get_lab_list().get_elem_count() > 0) {
fprintf(g_tfile, "\nLABEL:");
dumpBBLabel(get_lab_list(), g_tfile);
}
//Attributes
fprintf(g_tfile, "\nATTR:");
if (BB_is_entry(this)) {
fprintf(g_tfile, "entry_bb ");
}
//if (BB_is_exit(this)) {
// fprintf(g_tfile, "exit_bb ");
//}
if (BB_is_fallthrough(this)) {
fprintf(g_tfile, "fall_through ");
}
if (BB_is_target(this)) {
fprintf(g_tfile, "branch_target ");
}
//IR list
fprintf(g_tfile, "\nSTMT NUM:%d", getNumOfIR());
g_indent += 3;
TypeMgr * dm = ru->get_type_mgr();
for (IR * ir = BB_first_ir(this);
ir != NULL; ir = BB_irlist(this).get_next()) {
ASSERT0(IR_next(ir) == NULL && IR_prev(ir) == NULL);
ASSERT0(ir->get_bb() == this);
dump_ir(ir, dm, NULL, true, true, false);
}
g_indent -= 3;
fprintf(g_tfile, "\n");
fflush(g_tfile);
}