The WebAssembly target currently uses llvm.wasm.ref.null.*
and llvm.wasm.ref.is_null.*
intrinsics to represent ref.null
and ref.is_null
instructions.
But why are these intrinsics even necessary? Since reference types are represented in IR as non-integral pointer types, it should be possible to directly use ptr addrspace(...) null
and icmp eq ptr addrspace(...) %arg, null
for them.