karamel
karamel copied to clipboard
Simplify Steel.ST.Reference.with_local without EPushFrame/EPopFrame
This is a follow-up issue to FStarLang/FStar#2664 .
@msprotz proposed an optimized implementation of Steel.ST.Reference.with_local
without the need for anything like EPushFrame
/EPopFrame
, hoping to avoid unnecessary let res = ...
bindings: following our discussion last week, Jonathan told me we shouldn't need push_frame and pop_frame at all, as soon as we could disable some pass in Karamel, except maybe in some cases related to Karamel hoisting a local variable declaration from within a nested if branch up to the beginning of a function.
Thanks Jonathan for your proposed Karamel test patch (https://github.com/FStarLang/FStar/pull/2664#issuecomment-1204226111), I'll test it on my side.