diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-05-11 10:09:12 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-06-09 07:55:33 +0000 |
commit | 5efbd7165d6867aa376f23c20edcfe49e80518c6 (patch) | |
tree | 2cb510332dcc5973c4c017775567e25677c01e0d /src/qml/compiler/qv4ssa.cpp | |
parent | 4ea6d985fa76786a965443f814f3f9b59620e056 (diff) |
Change temp allocation when generating IR
For functions that won't get optimized, it's useful to limit the number
of temporaries as much as possible.
Change-Id: I6e9be3129c064fdc4c01e1ec6f1617e901c05935
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/compiler/qv4ssa.cpp')
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp index fc136b09ff..8cf5fac760 100644 --- a/src/qml/compiler/qv4ssa.cpp +++ b/src/qml/compiler/qv4ssa.cpp @@ -2770,7 +2770,7 @@ public: } else if (Const *c = (*conversion.expr)->asConst()) { convertConst(c, conversion.targetType); } else if (ArgLocal *al = (*conversion.expr)->asArgLocal()) { - Temp *target = bb->TEMP(bb->newTemp()); + Temp *target = bb->TEMP(bb->newTemp(BasicBlock::NewTempForOptimizer)); target->type = conversion.targetType; Expr *convert = bb->CONVERT(al, conversion.targetType); Move *convCall = f->NewStmt<Move>(); @@ -2791,7 +2791,7 @@ public: *conversion.expr = source; } else if (Temp *t = (*conversion.expr)->asTemp()) { - Temp *target = bb->TEMP(bb->newTemp()); + Temp *target = bb->TEMP(bb->newTemp(BasicBlock::NewTempForOptimizer)); target->type = conversion.targetType; Expr *convert = bb->CONVERT(t, conversion.targetType); Move *convCall = f->NewStmt<Move>(); @@ -2820,7 +2820,7 @@ public: // to: // double{%3} = double{-double{%1}}; // int32{%2} = int32{convert(double{%3})}; - Temp *tmp = bb->TEMP(bb->newTemp()); + Temp *tmp = bb->TEMP(bb->newTemp(BasicBlock::NewTempForOptimizer)); tmp->type = u->type; Move *extraMove = f->NewStmt<Move>(); worklist.registerNewStatement(extraMove); |