summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimizing_unit_test.h
diff options
context:
space:
mode:
authorAlex Light <allight@google.com>2021-04-21 17:04:13 -0700
committerAlex Light <allight@google.com>2021-04-26 09:10:12 -0700
commitbb550e415da77e7e21c8f800657984c145bb42e1 (patch)
tree0596ce5d5b1b2f58cef50f8ef133febdd053399c /compiler/optimizing/optimizing_unit_test.h
parentadfa1ad73a3a557bdec67d59894139b2727aaa7d (diff)
Fix issue with Partial LSE and casts/instanceof
If PartialLSE encounters an instanceof or check-cast before the escapes it could not correctly handle it. Due to how java language code is typically developed and compiled this is generally not a problem but could lead to incorrect codegen on release builds or DCHECK failures on debug builds. This fixes the issues by (1) causing partial LSE to consider check-cast and instance-ofs to be escaping. This also updates the instruction simplifier to be much more aggressive in removing instance-of and check-casts. Test: ./test.py --host Bug: 186041085 Change-Id: Ia513c4210a87a0dfa92f10adc530e17ee631d006
Diffstat (limited to 'compiler/optimizing/optimizing_unit_test.h')
-rw-r--r--compiler/optimizing/optimizing_unit_test.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/optimizing/optimizing_unit_test.h b/compiler/optimizing/optimizing_unit_test.h
index 12c1b9879f..6600ff319a 100644
--- a/compiler/optimizing/optimizing_unit_test.h
+++ b/compiler/optimizing/optimizing_unit_test.h
@@ -406,11 +406,12 @@ class OptimizingUnitTestHelper {
OptimizingUnitTestHelper::ManuallyBuildEnvFor(ins, &current_locals);
}
- HLoadClass* MakeClassLoad(std::optional<dex::TypeIndex> ti = std::nullopt) {
+ HLoadClass* MakeClassLoad(std::optional<dex::TypeIndex> ti = std::nullopt,
+ std::optional<Handle<mirror::Class>> klass = std::nullopt) {
return new (GetAllocator()) HLoadClass(graph_->GetCurrentMethod(),
ti ? *ti : dex::TypeIndex(class_idx_++),
graph_->GetDexFile(),
- /* klass= */ null_klass_,
+ /* klass= */ klass ? *klass : null_klass_,
/* is_referrers_class= */ false,
/* dex_pc= */ 0,
/* needs_access_check= */ false);