diff options
author | Vladimir Marko <vmarko@google.com> | 2015-02-18 14:06:43 +0000 |
---|---|---|
committer | Vladimir Marko <vmarko@google.com> | 2015-02-18 14:31:56 +0000 |
commit | 37e05bf384e21a031455c00b5fec668c187acd8d (patch) | |
tree | ce0aa5a654476bf3f2078db64f51b6dcb2ce8be4 /compiler | |
parent | 35757740da77220dc51d5cff3bc3a779f2eea9ef (diff) | |
download | art-37e05bf384e21a031455c00b5fec668c187acd8d.zip art-37e05bf384e21a031455c00b5fec668c187acd8d.tar.gz art-37e05bf384e21a031455c00b5fec668c187acd8d.tar.bz2 |
Quick: Disable DCE until we fix FP/Core reg mismatches.
GVN and TypeInference can miss some FP/Core register
mismatch:
const v0, #X ; marked as float
invoke-virtual v0, void foo(float)
const v0, #X ; marked as core
aput v0, v1, v2 ; float[] not used
The second const is eliminated by the DCE because it writes
the same value to the same dalvik reg. We replace the SSA
register name defined by the first const and used by the
invoke-virtual with the one defined by the second const.
When we generate code for the invoke-virtual, we get a core
location and may need a temporary to set up the FP argument
and we may not have an available temporary.
This may affect the bug below (more investigation needed).
Bug: 19419671
Change-Id: I44abd390706b980c346b36c9828a3bcb4e96726d
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dex/quick/quick_compiler.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/dex/quick/quick_compiler.cc b/compiler/dex/quick/quick_compiler.cc index f399429..19c2a5a 100644 --- a/compiler/dex/quick/quick_compiler.cc +++ b/compiler/dex/quick/quick_compiler.cc @@ -560,7 +560,7 @@ static uint32_t kCompilerOptimizerDisableFlags = 0 | // Disable specific optimi // (1 << kNullCheckElimination) | // (1 << kClassInitCheckElimination) | // (1 << kGlobalValueNumbering) | - // (1 << kGvnDeadCodeElimination) | + (1 << kGvnDeadCodeElimination) | // (1 << kLocalValueNumbering) | // (1 << kPromoteRegs) | // (1 << kTrackLiveTemps) | |