mirror of https://github.com/crytic/slither
parent
e4b010af8a
commit
3ed88b6c20
@ -0,0 +1,23 @@ |
|||||||
|
from slither.slithir.variables import (Constant, ReferenceVariable, |
||||||
|
TemporaryVariable, TupleVariable) |
||||||
|
from slither.slithir.operations import OperationWithLValue |
||||||
|
|
||||||
|
def transform_slithir_vars_to_ssa(function): |
||||||
|
""" |
||||||
|
Transform slithIR vars to SSA |
||||||
|
""" |
||||||
|
variables = [] |
||||||
|
for node in function.nodes: |
||||||
|
for ir in node.irs: |
||||||
|
if isinstance(ir, OperationWithLValue) and not ir.lvalue in variables: |
||||||
|
variables += [ir.lvalue] |
||||||
|
|
||||||
|
tmp_variables = [v for v in variables if isinstance(v, TemporaryVariable)] |
||||||
|
for idx in range(len(tmp_variables)): |
||||||
|
tmp_variables[idx].index = idx |
||||||
|
ref_variables = [v for v in variables if isinstance(v, ReferenceVariable)] |
||||||
|
for idx in range(len(ref_variables)): |
||||||
|
ref_variables[idx].index = idx |
||||||
|
tuple_variables = [v for v in variables if isinstance(v, TupleVariable)] |
||||||
|
for idx in range(len(tuple_variables)): |
||||||
|
tuple_variables[idx].index = idx |
Loading…
Reference in new issue