From 3e68841af318c04931acd658dc3cd05c706f5edc Mon Sep 17 00:00:00 2001 From: Claudiu-Vlad Ursache Date: Thu, 30 Apr 2026 23:29:57 +0200 Subject: [PATCH] respect `jb.dae` flag in AsmMethodSource currently the DeadAssignmentEliminator runs unconditionally in AsmMethodSource. This is undesirable in certain cases, for example when static analysis tools using soot do not want this optimization (as is the case for a tool I've contributed to recently). The option is already there, so might as well respect it. --- src/main/java/soot/asm/AsmMethodSource.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/soot/asm/AsmMethodSource.java b/src/main/java/soot/asm/AsmMethodSource.java index ec11d6e32b8..d10bef6c607 100644 --- a/src/main/java/soot/asm/AsmMethodSource.java +++ b/src/main/java/soot/asm/AsmMethodSource.java @@ -2026,7 +2026,9 @@ public Body getBody(SootMethod m, String phaseName) { // b = (B) a; // return b; castAndReturnInliner.transform(jb); - DeadAssignmentEliminator.v().transform(jb); + if (!"false".equalsIgnoreCase(PhaseOptions.v().getPhaseOptions("jb.dae").get("enabled"))) { + DeadAssignmentEliminator.v().transform(jb); + } try { PackManager.v().getPack("jb").apply(jb); @@ -2035,7 +2037,9 @@ public Body getBody(SootMethod m, String phaseName) { } TrapTightener.removeInvalidTraps(jb); LocalPacker.v().transform(jb); - DeadAssignmentEliminator.v().transform(jb); + if (!"false".equalsIgnoreCase(PhaseOptions.v().getPhaseOptions("jb.dae").get("enabled"))) { + DeadAssignmentEliminator.v().transform(jb); + } UnconditionalBranchFolder.v().transform(jb); jb.ensureUniqueLocalNames();