From 000447a36a3acf1f286de3f3fc1a95d2e4a9e961 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Wed, 4 Jun 2025 17:00:56 -0700 Subject: [PATCH] Update base for Update on "[compiler] Distinguish Alias/Assign effects" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Alias was akward becuase it had a specific data flow / mutability relationship — direct mutations affect both sides - but also populated the output. We need the ability to express the aliasing dataflwo/mutability relationship w/o expressing actual assignment. An example of this is that for an unknown method call `const z = x.y()`, we want to express the Alias-style mutability relationship btw z and x (Muate(z) => Mutate(x)), but we want to assume that `z !== x`. This ends up being really clean, the places that should use Assign are very obvious (LoadLocal, StoreLocal) and most places keep using Alias. [ghstack-poisoned]