You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We hit an issue with 8cec2f2 introducing an InvokeStateMap and looking up InvokeInst keys in lowerInvokable from the CallLoweringInfo parameter, which causes trouble for LLILC since the call to lowerInvokable that statepoints (and patchpoints) use doesn't attach the CallSite to the CallLoweringInfo.
The two means of creating CallLoweringInfos (i.e. with and without the CallSite) have existed for as long as CallLoweringInfo has. The EH state map needs to use InvokeInsts as keys now because there are no longer EndPads and so it can't just use the unwind destination like it did previously. The InvokeInst is needed in SelectionDAGBuilder::lowerInvokable, which is a private helper method. It has two callers, one of which is for statepoints/patchpoints and the other of which always passes a CallLoweringInfo with a CallSite. To me, it makes more sense to just add the InvokeInst as a parameter to the helper, to avoid upsetting expectations in the call lowering code about what it means when a CallLoweringInfo has a CallSite attached to it and to avoid expanding CallLoweringInfo to include EH state map info that's only relevant for funclet EH.
Since the problem only arises with the combination of statepoint invokes and funclet EH, there won't be a good way to add a lit test demonstrating the issue (which should be included when this change is upstreamed) until #105 has been implemented and upstreamed; statepoint invokes can't be lowered without it. So this issue depends on that one.
The text was updated successfully, but these errors were encountered:
See e.g. this TODO.
We hit an issue with 8cec2f2 introducing an
InvokeStateMap
and looking upInvokeInst
keys inlowerInvokable
from theCallLoweringInfo
parameter, which causes trouble for LLILC since the call tolowerInvokable
that statepoints (and patchpoints) use doesn't attach theCallSite
to theCallLoweringInfo
.The two means of creating
CallLoweringInfo
s (i.e. with and without theCallSite
) have existed for as long asCallLoweringInfo
has. The EH state map needs to useInvokeInst
s as keys now because there are no longer EndPads and so it can't just use the unwind destination like it did previously. TheInvokeInst
is needed inSelectionDAGBuilder::lowerInvokable
, which is a private helper method. It has two callers, one of which is for statepoints/patchpoints and the other of which always passes aCallLoweringInfo
with aCallSite
. To me, it makes more sense to just add theInvokeInst
as a parameter to the helper, to avoid upsetting expectations in the call lowering code about what it means when aCallLoweringInfo
has aCallSite
attached to it and to avoid expandingCallLoweringInfo
to include EH state map info that's only relevant for funclet EH.Since the problem only arises with the combination of statepoint invokes and funclet EH, there won't be a good way to add a lit test demonstrating the issue (which should be included when this change is upstreamed) until #105 has been implemented and upstreamed; statepoint invokes can't be lowered without it. So this issue depends on that one.
The text was updated successfully, but these errors were encountered: