lean4-htt/tests/lean/run/4278.lean
Henrik Böving 92aec45057
perf: boxing a uint64 yields and object not a tobject (#12465)
This PR changes the boxed type of `uint64` from `tobject` to `object` to
allow for more precise reference counting.
2026-02-13 12:14:37 +00:00

22 lines
573 B
Text

-- Type has trivial structure, so `u64` representation is expected.
structure Unboxed where val : UInt64
structure S where
unboxed : Unboxed
unused : Bool
/--
trace: [Compiler.IR] [result]
def get_unboxed (x_1 : obj) : u64 :=
let x_2 : u64 := sproj[0, 0] x_1;
dec x_1;
ret x_2
def get_unboxed._boxed (x_1 : obj) : obj :=
let x_2 : u64 := get_unboxed x_1;
let x_3 : obj := box x_2;
ret x_3
-/
#guard_msgs in
set_option trace.compiler.ir.result true in
@[export get_unboxed]
def get_unboxed (s : S) : UInt64 := s.unboxed.val