llvm.frameescape() intrinsic is not a real call. The intrinsic can only exist in the entry block.
Inserting a gc.statepoint() before llvm.frameescape() may split the entry block, and push the intrinsic out of the entry block.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
LGTM. Sorry for not getting to this review sooner. I managed not to see it.
Out of curiosity, why are you using frameescape with statepoints? Not a combination I would have expected.
Comment Actions
The llvm.frameescape() intrinsic is inserted by the LLILC JIT to ensure that some information about generics-context stays alive.
The MSIL reader allocates memory on the stack to hold the some scratch information and marks it address-escaped.