summaryrefslogtreecommitdiff
path: root/src/analysis/disass/loop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/disass/loop.c')
-rw-r--r--src/analysis/disass/loop.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/analysis/disass/loop.c b/src/analysis/disass/loop.c
index 99121a8..204a7d6 100644
--- a/src/analysis/disass/loop.c
+++ b/src/analysis/disass/loop.c
@@ -49,8 +49,7 @@ static void detect_back_edges(dragon_node *nodes, size_t count)
dragon_node *node; /* Noeud à traiter */
const bitfield_t *dominators; /* Liste de dominateurs */
GArchInstruction *last; /* Instruction finale de noeud */
- GArchInstruction **dests; /* Instr. visée par une autre */
- InstructionLinkType *types; /* Type de lien entre lignes */
+ instr_link_t *dests; /* Instr. visées par une autre */
size_t dcount; /* Nombre de liens de dest. */
size_t i; /* Boucle de parcours #2 */
dragon_node *target; /* Noeud référence à tester */
@@ -65,10 +64,10 @@ static void detect_back_edges(dragon_node *nodes, size_t count)
get_dragon_node_bounding_instructions(node, NULL, &last);
g_arch_instruction_wlock_dest(last);
- dcount = g_arch_instruction_get_destinations(last, &dests, &types);
+ dcount = g_arch_instruction_get_destinations(last, &dests);
for (i = 0; i < dcount; i++)
- switch (types[i])
+ switch (dests[i].type)
{
case ILT_EXEC_FLOW:
case ILT_JUMP:
@@ -76,7 +75,7 @@ static void detect_back_edges(dragon_node *nodes, size_t count)
case ILT_JUMP_IF_TRUE:
case ILT_JUMP_IF_FALSE:
- target = find_node_for_instruction(nodes, count, false, dests[i]);
+ target = find_node_for_instruction(nodes, count, false, dests[i].linked);
if (target == NULL) break;
id = get_dragon_node_index(nodes, target);
@@ -90,7 +89,7 @@ static void detect_back_edges(dragon_node *nodes, size_t count)
(unsigned int)g_arch_instruction_get_range(dests[i])->addr.virtual);
*/
- /* status = */g_arch_instruction_change_link(last, dests[i], types[i], ILT_LOOP);
+ /* status = */g_arch_instruction_change_link(last, dests[i].linked, dests[i].type, ILT_LOOP);
}