summaryrefslogtreecommitdiff
path: root/src/analysis/disass
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-01-18 20:51:26 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-01-18 20:51:26 (GMT)
commitfe679c19bb156abb348184b1dd222adb61164c23 (patch)
tree49e7f8d96330437f427975ba3e3e8fa6223d52d6 /src/analysis/disass
parent3a4a977678848d7284df585480e4056d5553a4f2 (diff)
Handled bigger irreducible loops without blocking.
Diffstat (limited to 'src/analysis/disass')
-rw-r--r--src/analysis/disass/loop.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/analysis/disass/loop.c b/src/analysis/disass/loop.c
index 4a499fd..c37c7f6 100644
--- a/src/analysis/disass/loop.c
+++ b/src/analysis/disass/loop.c
@@ -408,9 +408,8 @@ static void define_basic_blocks_loops(GBlockList *list, bblock_info_t *info)
{
links = get_block_predecessors(block, info, &count);
-
for (k = 0; k < count; k++)
- if (links[k].info->iloop_header == iter->iloop_header)
+ if (should_be_natural_loop_link(iter->iloop_header, links[k].info->iloop_header))
{
g_basic_block_get_boundaries(G_BASIC_BLOCK(links[k].linked), NULL, &last);
g_basic_block_get_boundaries(G_BASIC_BLOCK(block), &first, NULL);