aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@digia.com>2014-01-28 13:01:12 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-07 10:44:45 +0100
commit412f22f15ac13d678d018763aafad134ee02e872 (patch)
tree112cd72132459b9861bb741c3e352637ac1d4e23 /src/qml
parentb4883080781f3ea68e4a688821d353a321c39f95 (diff)
V4: fix life range for phi node target that is never used.
When a temp is defined by a phi-node, but never used, still insert the (very short) life range. Change-Id: Ia976f496736a1606108fab7597c5d90048d9d55a Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/compiler/qv4ssa.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp
index 44c93df4c9..d9cc51fc82 100644
--- a/src/qml/compiler/qv4ssa.cpp
+++ b/src/qml/compiler/qv4ssa.cpp
@@ -3552,7 +3552,13 @@ private:
for (int i = bb->statements.size() - 1; i >= 0; --i) {
Stmt *s = bb->statements[i];
if (Phi *phi = s->asPhi()) {
- live.remove(*phi->targetTemp);
+ LiveRegs::iterator it = live.find(*phi->targetTemp);
+ if (it == live.end()) {
+ // a phi node target that is only defined, but never used
+ _intervals[*phi->targetTemp].setFrom(s);
+ } else {
+ live.erase(it);
+ }
continue;
}
collector.collect(s);