summaryrefslogtreecommitdiff
path: root/compiler/optimizing/load_store_analysis.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/load_store_analysis.cc')
-rw-r--r--compiler/optimizing/load_store_analysis.cc11
1 files changed, 6 insertions, 5 deletions
diff --git a/compiler/optimizing/load_store_analysis.cc b/compiler/optimizing/load_store_analysis.cc
index 38ed98adaf..3fe42aff2e 100644
--- a/compiler/optimizing/load_store_analysis.cc
+++ b/compiler/optimizing/load_store_analysis.cc
@@ -94,7 +94,8 @@ static bool CanBinaryOpsAlias(const HBinaryOperation* idx1,
// Make sure we mark any writes/potential writes to heap-locations within partially
// escaped values as escaping.
void ReferenceInfo::PrunePartialEscapeWrites() {
- if (!subgraph_.IsValid()) {
+ DCHECK(subgraph_ != nullptr);
+ if (!subgraph_->IsValid()) {
// All paths escape.
return;
}
@@ -104,12 +105,12 @@ void ReferenceInfo::PrunePartialEscapeWrites() {
for (const HUseListNode<HInstruction*>& use : reference_->GetUses()) {
const HInstruction* user = use.GetUser();
if (!additional_exclusions.IsBitSet(user->GetBlock()->GetBlockId()) &&
- subgraph_.ContainsBlock(user->GetBlock()) &&
+ subgraph_->ContainsBlock(user->GetBlock()) &&
(user->IsUnresolvedInstanceFieldSet() || user->IsUnresolvedStaticFieldSet() ||
user->IsInstanceFieldSet() || user->IsStaticFieldSet() || user->IsArraySet()) &&
(reference_ == user->InputAt(0)) &&
- std::any_of(subgraph_.UnreachableBlocks().begin(),
- subgraph_.UnreachableBlocks().end(),
+ std::any_of(subgraph_->UnreachableBlocks().begin(),
+ subgraph_->UnreachableBlocks().end(),
[&](const HBasicBlock* excluded) -> bool {
return reference_->GetBlock()->GetGraph()->PathBetween(excluded,
user->GetBlock());
@@ -122,7 +123,7 @@ void ReferenceInfo::PrunePartialEscapeWrites() {
}
if (UNLIKELY(additional_exclusions.IsAnyBitSet())) {
for (uint32_t exc : additional_exclusions.Indexes()) {
- subgraph_.RemoveBlock(graph->GetBlocks()[exc]);
+ subgraph_->RemoveBlock(graph->GetBlocks()[exc]);
}
}
}