Insert int3 after non-returning calls at the end of basic blocks. (#17535)
authorEugene Rozenfeld <erozen@microsoft.com>
Fri, 13 Apr 2018 23:29:12 +0000 (16:29 -0700)
committerGitHub <noreply@github.com>
Fri, 13 Apr 2018 23:29:12 +0000 (16:29 -0700)
commitee5ab84c4c0c073f8ab463aed7ce9d10f5e26887
tree32f1ad0c43171614259f44ec0931ade6925b52cd
parent3db838482038472ee9d75e3a204a77542d30b82b
Insert int3 after non-returning calls at the end of basic blocks. (#17535)

This is a follow-up to #17501 that fixed #17398.

gc pointer reporting in fully-interruptible mode: the latter assumed that
register gc pointer liveness doesn't change across calls while #6103 introduced
codegen where it wasn't true.

doesn't change across calls.

This change inserts int3 after non-returning calls at the end of basic blocks
so that gc pointer liveness doesn't change across calls. This is additional
insurance in case any other place in the runtime is dependent on that contract.
src/jit/codegenlinear.cpp