From 018899d778bd6e33b4b2045122ab6ea82b5e68e0 Mon Sep 17 00:00:00 2001 From: Sathya Gunasekaran Date: Thu, 2 Feb 2023 17:41:27 +0000 Subject: [PATCH] [aliasing] Make aliasing account for MutableRange.end being exclusive --- .../src/Inference/InferAliasForStores.ts | 2 +- ...md => logical-expression-object.expect.md} | 27 ++++++++++--------- ...object.js => logical-expression-object.js} | 0 3 files changed, 15 insertions(+), 14 deletions(-) rename compiler/forget/src/__tests__/fixtures/hir/{_bug_logical-expression-object.expect.md => logical-expression-object.expect.md} (77%) rename compiler/forget/src/__tests__/fixtures/hir/{_bug_logical-expression-object.js => logical-expression-object.js} (100%) diff --git a/compiler/forget/src/Inference/InferAliasForStores.ts b/compiler/forget/src/Inference/InferAliasForStores.ts index ca3f61df37..4e5d4908de 100644 --- a/compiler/forget/src/Inference/InferAliasForStores.ts +++ b/compiler/forget/src/Inference/InferAliasForStores.ts @@ -64,7 +64,7 @@ function maybeAlias( id: InstructionId ): void { if ( - lvalue.identifier.mutableRange.end > id || + lvalue.identifier.mutableRange.end > id + 1 || rvalue.identifier.mutableRange.end > id ) { aliases.union([lvalue.identifier, rvalue.identifier]); diff --git a/compiler/forget/src/__tests__/fixtures/hir/_bug_logical-expression-object.expect.md b/compiler/forget/src/__tests__/fixtures/hir/logical-expression-object.expect.md similarity index 77% rename from compiler/forget/src/__tests__/fixtures/hir/_bug_logical-expression-object.expect.md rename to compiler/forget/src/__tests__/fixtures/hir/logical-expression-object.expect.md index ef157c6d81..01cd635182 100644 --- a/compiler/forget/src/__tests__/fixtures/hir/_bug_logical-expression-object.expect.md +++ b/compiler/forget/src/__tests__/fixtures/hir/logical-expression-object.expect.md @@ -21,22 +21,23 @@ function component(props) { function component(props) { const $ = React.useMemoCache(); const c_0 = $[0] !== props; - let a; + let t1; if (c_0) { - a = props.a || (props.b && props.c && props.d); - const c_2 = $[2] !== props; - let t3; - if (c_2) { - t3 = (props.a && props.b && props.c) || props.d; - $[2] = props; - $[3] = t3; - } else { - t3 = $[3]; - } + t1 = props.a || (props.b && props.c && props.d); $[0] = props; - $[1] = a; + $[1] = t1; } else { - a = $[1]; + t1 = $[1]; + } + const a = t1; + const c_2 = $[2] !== props; + let t3; + if (c_2) { + t3 = (props.a && props.b && props.c) || props.d; + $[2] = props; + $[3] = t3; + } else { + t3 = $[3]; } const b = t3; const c_4 = $[4] !== a; diff --git a/compiler/forget/src/__tests__/fixtures/hir/_bug_logical-expression-object.js b/compiler/forget/src/__tests__/fixtures/hir/logical-expression-object.js similarity index 100% rename from compiler/forget/src/__tests__/fixtures/hir/_bug_logical-expression-object.js rename to compiler/forget/src/__tests__/fixtures/hir/logical-expression-object.js