aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qml/compiler/qv4ssa.cpp12
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()) {