mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-16 04:09:07 +00:00
rsx/fp/cfg: Insert bi-directional edges correctly during traversal
This commit is contained in:
parent
65b4bcb027
commit
fa40cef0b1
@ -101,6 +101,28 @@ namespace rsx::assembler
|
||||
|
||||
if (found)
|
||||
{
|
||||
if (!bb->pred.empty())
|
||||
{
|
||||
switch (bb->pred.back().type)
|
||||
{
|
||||
case EdgeType::IF:
|
||||
case EdgeType::ELSE:
|
||||
bb->insert_succ(*found, EdgeType::ENDIF);
|
||||
break;
|
||||
case EdgeType::LOOP:
|
||||
bb->insert_succ(*found, EdgeType::ENDLOOP);
|
||||
break;
|
||||
default:
|
||||
// Missing an edge type?
|
||||
rsx_log.error("CFG: Unexpected block exit. Report to developers.");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Impossible situation.
|
||||
rsx_log.error("CFG: Child block has no parent but has successor! Report to developers.");
|
||||
}
|
||||
|
||||
bb = *found;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user