__smo and __log intrinsics return unit () but the returned value is not correctly compiled in the IR. Instead of having a const () as their return value they just return their underlaying IR instruction that does not return a value.
E.g. compiling the following script producess ICEs:
script;
fn main() {
poke(__smo(b256::zero(), 0u64, 0));
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Internal compiler error: An attempt to get register for unknown Value.
poke(__log(0u64));
// Internal compiler error: An attempt to get register for unknown Value.
}
#[inline(never)]
fn poke<T>(_x: T) {}
__smoand__logintrinsics return unit()but the returned value is not correctly compiled in the IR. Instead of having a const()as their return value they just return their underlaying IR instruction that does not return a value.E.g. compiling the following script producess ICEs: