diff options
author | Artem Serov <artem.serov@linaro.org> | 2017-07-20 16:33:59 +0100 |
---|---|---|
committer | Artem Serov <artem.serov@linaro.org> | 2017-12-12 18:13:10 +0000 |
commit | 1de1e11ac90db9fad8916ac43d43714ccb8d978f (patch) | |
tree | 6653892be4d2372a189c4b82e8c3c8b0be064979 /test/ProfileTestMultiDex/Main.java | |
parent | 986005c955860a69d788f7ff7d7f28964eb684ad (diff) |
ART: Try to statically evaluate some conditions.
If a condition 'cond' is evaluated in an HIf instruction then in
the successors of the this HIF_BLOCK we statically know the value
of the condition (TRUE in TRUE_SUCC, FALSE in FALSE_SUCC). Using
that we could replace another evaluation (use) EVAL of the same
'cond' with TRUE value (FALSE value) if every path from the
ENTRY_BLOCK to EVAL_BLOCK contains the edge HIF_BLOCK->TRUE_SUCC
(HIF_BLOCK->FALSE_SUCC).
if (cond) {
...
if (cond) {
...
}
...
int a = cond ? 5 : 105;
...
}
The patch is a prerequisite step for "Loop peeling to eliminate
invariant exits" however it brings some value on its own with
a tiny code size reduction in boot-framework.oat (-8Kb).
Test: 458-checker-instruct-simplification
Test: test-art-target, test-art-host.
Change-Id: Ifbe45097dc2b5f098176fa1a1d023ea90b76d396
Diffstat (limited to 'test/ProfileTestMultiDex/Main.java')
0 files changed, 0 insertions, 0 deletions