From 94c8839d81e83bf5f329d9877dd0694eecd037a2 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Sun, 1 Jun 2025 17:19:49 -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]