diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2014-01-30 13:48:31 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-31 10:34:36 +0100 |
commit | 95809584e20df61b7ec99061162d53604f13a7ec (patch) | |
tree | 45f8be27e54e5599540697c4a3fb0e55ced9bd4b /tests/auto/quick/qquickmousearea | |
parent | 445c15c3e52192d64b28a3d22ee4aeedbe715ba0 (diff) |
V4 regalloc: fix interval splitting when register pressure is high.
When a register is needed for an interval, but none is available, one
of the used registers will be chosen and spilled to the stack (meaning
it will be split) before the current position. However, if a register
is used at the current position for an incoming parameter, its interval
has to be split after the current position. This patch adds/fixes the
latter case.
This fixes crypto.js on x86. The specific problem there was that the
result of an operation needed a register, and chose the one from one
of the incoming parameters (which then should get spilled/split).
However, this interval was already split, and started exactly at that
the current position. So splitting before the current position did
nothing, resulting in it staying alive and using the same register as
the result. So any subsequent use of would have the invalid value.
Task-number: QTBUG-36430
Change-Id: I228fc210b009aa0b16b08a374fc955fabfbb6d12
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'tests/auto/quick/qquickmousearea')
0 files changed, 0 insertions, 0 deletions