diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp index 62461665d8..ab20696e01 100644 --- a/src/qml/compiler/qv4ssa.cpp +++ b/src/qml/compiler/qv4ssa.cpp @@ -3248,6 +3248,18 @@ void optimizeSSA(Function *function, DefUsesCalculator &defUses, DominatorTree & W.clear(s); continue; } + + // dead code elimination: + if (defUses.useCount(*phi->targetTemp) == 0) { + foreach (Expr *in, phi->d->incoming) { + if (Temp *t = in->asTemp()) + W += defUses.defStmt(*t); + } + + defUses.removeDef(*phi->targetTemp); + W.clear(s); + continue; + } } else if (Move *m = s->asMove()) { if (Convert *convert = m->source->asConvert()) { if (Const *sourceConst = convert->expr->asConst()) { |