if (!isEndOfSubroutine(ip + 1)) {
// insert a PRERET at the entry if this is an early return
// (only needed for sharing code in the epilogue)
+ BasicBlock *pos = getBB();
+ setPosition(BasicBlock::get(func->cfg.getRoot()), false);
mkFlow(OP_PRERET, leave, CC_ALWAYS, NULL)->fixed = 1;
- bb->cfg.attach(&leave->cfg, Graph::Edge::CROSS);
- } else {
- mkFlow(OP_RET, NULL, CC_ALWAYS, NULL)->fixed = 1;
- bb->cfg.attach(&leave->cfg, Graph::Edge::TREE);
+ setPosition(pos, true);
}
+ mkFlow(OP_RET, NULL, CC_ALWAYS, NULL)->fixed = 1;
+ bb->cfg.attach(&leave->cfg, Graph::Edge::CROSS);
}
break;
case TGSI_OPCODE_END: