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
- Repository
- rL LLVM
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.