It seems that in the "create_fallback" pass, we are merging some of the failure nodes to their parents (those which does not have a first_inst of function call). The logic is twisted and incorrect. If we are moving the code to a parent node, then should we remove the child? We should remember to cast the packet to the right fallback structure. It seems that we are not doing these. This issue also causes the variable_analysis pass to count variable dependencies multiple times (both in the parent and child).
It seems that at the moment of implementation I did not had a strict protocol defining how to fallback and caused this inconsistency. Let's fix this.
It seems that in the "create_fallback" pass, we are merging some of the failure nodes to their parents (those which does not have a first_inst of function call). The logic is twisted and incorrect. If we are moving the code to a parent node, then should we remove the child? We should remember to cast the packet to the right fallback structure. It seems that we are not doing these. This issue also causes the variable_analysis pass to count variable dependencies multiple times (both in the parent and child).
It seems that at the moment of implementation I did not had a strict protocol defining how to fallback and caused this inconsistency. Let's fix this.