-
https://soot-oss.github.io/SootUp/latest/bodyinterceptors/#staticsingleassignmentformer |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments
-
Having the Localsplitter enabled is always a good idea to create better (valid) Jimple. Maybe @wangzun66 has some insights about this as she is looking into improving/fixing SSA, currently. |
Beta Was this translation helpful? Give feedback.
-
In fact, LocalSplitter and StaticSingleAssignmentFormer are two different BodyInterceptors. Their relationship is not one of containment. When a CFG has no fork-joins, as shown in LocalSplitter Example_1, their effects are similar, although the renaming way differs slightly. When a CFG contains fork-joins, as shown in LocalSplitter Example_2, their effects are very different. LocalSplitter treats the same local variables that appears in both branches as a single local variable. In contrast, StaticSingleAssignmentFormer treats them as two different local variables and adds an assignment with a phi-expression at their merge point to distinguish them. |
Beta Was this translation helpful? Give feedback.
In fact, LocalSplitter and StaticSingleAssignmentFormer are two different BodyInterceptors. Their relationship is not one of containment. When a CFG has no fork-joins, as shown in LocalSplitter Example_1, their effects are similar, although the renaming way differs slightly. When a CFG contains fork-joins, as shown in LocalSplitter Example_2, their effects are very different. LocalSplitter treats the same local variables that appears in both branches as a single local variable. In contrast, StaticSingleAssignmentFormer treats them as two different local variables and adds an assignment with a phi-expression at their merge point to distinguish them.