<div dir="ltr">Hello,<div><br></div><div>I've spent some time with the LLVM documentation and am beginning to grasp a few things, but I sometimes need very literal statements to actually understand things.</div><div><br></div><div>My first question is about StackMaps:</div><div><br></div><div>Is it true that <span style="color:rgb(51,51,51);font-family:Consolas,'Liberation Mono',Menlo,Courier,monospace;font-size:12px;line-height:16.7999992370605px;white-space:pre">llvm_gc_root_chain </span>is an API? I've been trying to understand how exactly one accesses this structure and no where in the documentation does it mention this is a public variable that will be present in the final executable (in those or such explicit words). Secondly, if this is true, does it then mean that this variable is only accessible to C/C++ land? In turn I'll have some sort of main.cpp that will then be linked with llc output?</div><div><br></div><div>My second question is about GCRoot intrinsic and ShadowStack?</div><div><br></div><div>I've read up about intrinsics and it seems if I call LLVMAddFunction("llvm.*") .. it will be treated in special way by the code generator?</div><div><br></div><div>If I set my GC to Shadowstack and mark all object pointers as GCroots, will this be 100% correct? Or do I need to myself in my code gen phase spill registers? Or does ShadowStack essentially do that for me?</div><div><br></div><div>I guess my question here is F.SetGC("shadow-stack") + gcroot is enough for a precise GC or do I need to do more work in my frontend to do things so that processor register stored pointers are identified.</div><div><br></div><div>HA</div></div>