summaryrefslogtreecommitdiff
path: root/compiler/optimizing/gvn.cc
diff options
context:
space:
mode:
author Aart Bik <ajcbik@google.com> 2015-07-14 16:07:00 -0700
committer Aart Bik <ajcbik@google.com> 2015-07-20 10:25:26 -0700
commit854a02b1b488327f80c544ca1119b386b8715c26 (patch)
tree7f48f01a7624d07b0c24bf589308673dcb05683c /compiler/optimizing/gvn.cc
parent8ae3588989ea99d8c60f885e3d830e6e0c87ff5f (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.cc4
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;