From b5ebeda9496f71b2be4fdbd965f1f1d36abfe86a Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Tue, 3 Jun 2025 17:00:47 -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]