summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2015-02-18 14:06:43 +0000
committerVladimir Marko <vmarko@google.com>2015-02-18 14:31:56 +0000
commit37e05bf384e21a031455c00b5fec668c187acd8d (patch)
treece0aa5a654476bf3f2078db64f51b6dcb2ce8be4 /compiler
parent35757740da77220dc51d5cff3bc3a779f2eea9ef (diff)
downloadart-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.cc2
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) |