why is gc.root 8 bits?

I’m trying to add gcoot functionality to my code and I’m confused by why gcroot is assuming to be an i8**

I’m using i32 as object and array pointers and if I make them i8 things seem to work.

I’m generating IR much like http://llvm.org/docs/GarbageCollection.html#llvm-ir-features

void @llvm.gcroot(i8** %ptrloc, i8* %metadata)

LLVM currently lacks a void* equivalent, so i8* is frequently used to mean 'pointer to something'. There's work currently underway to remove types from pointers, so this will become just a generic pointer.


Thanks, David.

I see. So if I do bitcast i32** to i8** … I should NOT lose any information or cause an error? It seems like that’s what you’re implying which is what I was hoping for.

Correct. In a few months, that bitcast is likely to become unnecessary.