Please sign in to comment.
Defer contraction pass for variables that are copy-propagated (#874)
Copy propagation of local procedure names may re-introduce references to contracted procedures, and thus breaks the invariant that contracted procedures are only referenced once. With certain code patterns (for example in srfi-14-tests.scm as reported by Mario) this could cause the compiler to contract infinitely (if the contracted code contains propagated references to other contractions). Now contraction is disabled for variables that are "replacing" (i.e. propagated). Once the propagation has taken place a later optimization pass will do the contraction. This fixes #874 (https://bugs.call-cc.org/ticket/874) Signed-off-by: Mario Domenech Goulart <email@example.com> (cherry picked from commit 285f53d) Backport conflicts: optimizer.scm, mostly due to ( vs [ braces.
- Loading branch information...