Just lower this to null. Pass implicitarg.ptr in its place in the
argument list.
Details
Diff Detail
Event Timeline
I'm not aware of any valid explicit uses of this intrinsic by library or developer code, so this seems fine to me.
A trap isn’t particularly different from the null dereference if you try to actually use it. I was leaning more towards a compile time error
It is actually very different. A null pointer dereference means debugging, tracking the pointer, analyzing IR step by step until you see why was null emitted. A trap on the contrary is immediately visible in the ISA dump and immediately triggers the alarm, that compiler have spotted the code which should never been executed.
The trap adds extra complexity to the implementation since now the queue ptr needs to be passed to the function. This should probably be considered a backend internal intrinsic now, so I'm not sure it's worth the effort
It is actually very different. A null pointer dereference means debugging, tracking the pointer, analyzing IR step by step until you see why was null emitted. A trap on the contrary is immediately visible in the ISA dump and immediately triggers the alarm, that compiler have spotted the code which should never been executed.
Sigh. OK, let's hope we will never have to debug it.