Fix CombineBlocks optimization
(df_attributes & DF_DA) means Get not Put.
The patch fixes the condition to eliminate catch block for
get/put operations.
Change-Id: I48036f3614de5116e27c0d6e9a7a342432c9a828
Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
diff --git a/compiler/dex/mir_optimization.cc b/compiler/dex/mir_optimization.cc
index b35d51c..a0ad213 100644
--- a/compiler/dex/mir_optimization.cc
+++ b/compiler/dex/mir_optimization.cc
@@ -771,11 +771,11 @@
if ((df_attributes & DF_IFIELD) != 0) {
// Combine only if fast, otherwise weird things can happen.
const MirIFieldLoweringInfo& field_info = GetIFieldLoweringInfo(throw_insn);
- ok = (df_attributes & DF_DA) ? field_info.FastPut() : field_info.FastGet();
+ ok = (df_attributes & DF_DA) ? field_info.FastGet() : field_info.FastPut();
} else if ((df_attributes & DF_SFIELD) != 0) {
// Combine only if fast, otherwise weird things can happen.
const MirSFieldLoweringInfo& field_info = GetSFieldLoweringInfo(throw_insn);
- bool fast = ((df_attributes & DF_DA) ? field_info.FastPut() : field_info.FastGet());
+ bool fast = ((df_attributes & DF_DA) ? field_info.FastGet() : field_info.FastPut());
// Don't combine if the SGET/SPUT can call <clinit>().
bool clinit = !field_info.IsClassInitialized() &&
(throw_insn->optimization_flags & MIR_CLASS_IS_INITIALIZED) == 0;