diff options
author | 2015-07-14 16:07:00 -0700 | |
---|---|---|
committer | 2015-07-20 10:25:26 -0700 | |
commit | 854a02b1b488327f80c544ca1119b386b8715c26 (patch) | |
tree | 7f48f01a7624d07b0c24bf589308673dcb05683c /compiler/optimizing/gvn.cc | |
parent | 8ae3588989ea99d8c60f885e3d830e6e0c87ff5f (diff) |
Improved side effect analysis (field/array write/read).
Rationale:
Types (int, float etc.) and access type (field vs. array)
can be used to disambiguate write/read side-effects analysis.
This directly improves e.g. dead code elimination and licm.
Change-Id: I371f6909a3f42bda13190a03f04c4a867bde1d06
Diffstat (limited to 'compiler/optimizing/gvn.cc')
-rw-r--r-- | compiler/optimizing/gvn.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/optimizing/gvn.cc b/compiler/optimizing/gvn.cc index 708733e28c..39006465d5 100644 --- a/compiler/optimizing/gvn.cc +++ b/compiler/optimizing/gvn.cc @@ -120,7 +120,7 @@ class ValueSet : public ArenaObject<kArenaAllocMisc> { // Removes all instructions in the set affected by the given side effects. void Kill(SideEffects side_effects) { DeleteAllImpureWhich([side_effects](Node* node) { - return node->GetInstruction()->GetSideEffects().DependsOn(side_effects); + return node->GetInstruction()->GetSideEffects().MayDependOn(side_effects); }); } @@ -264,7 +264,7 @@ class ValueSet : public ArenaObject<kArenaAllocMisc> { // odd buckets to speed up deletion. size_t HashCode(HInstruction* instruction) const { size_t hash_code = instruction->ComputeHashCode(); - if (instruction->GetSideEffects().HasDependencies()) { + if (instruction->GetSideEffects().DoesAnyRead()) { return (hash_code << 1) | 0; } else { return (hash_code << 1) | 1; |