diff options
| author | Ben Cheng <bccheng@android.com> | 2011-04-26 10:00:22 -0700 |
|---|---|---|
| committer | Ben Cheng <bccheng@android.com> | 2011-04-26 10:26:16 -0700 |
| commit | de9e2b90c156664a1bdc2b5c9911e4dfa527c148 (patch) | |
| tree | e954d8defe0190ccbfdbd71f3a74ce63dd4ca305 /vm/compiler/codegen/CodegenFactory.cpp | |
| parent | 98bfc3b7162417dc1816a75dc566de3572a7e5da (diff) | |
Bug fixes for ld/st elimination.
1) Only optimize each block once. Strictly speaking this is not a
correctness issue however it triggers the subsequent problem.
2) Ignore dead instructions.
1: ldr r2, [r5, #8]
2: ldr r3, [r5, #8](nop)
3: str r3, [r5, #4]
4: movs r3, r2
When using instruction 1 to initiate redundant ld/st eliminations, if
instruction 2 (which is already dead) is not ignored, it will be turned
into a "mov r3, r2" and that will clobber r3 used by the str.
Change-Id: I8eecd13eeb30e4a67ecf1f8fbad925b1e6e91fc8
Diffstat (limited to 'vm/compiler/codegen/CodegenFactory.cpp')
0 files changed, 0 insertions, 0 deletions
