Skip to content
This repository has been archived by the owner on Mar 15, 2022. It is now read-only.

EH: Catch handler support in reader #66

Closed
JosephTremoulet opened this issue Feb 19, 2015 · 2 comments
Closed

EH: Catch handler support in reader #66

JosephTremoulet opened this issue Feb 19, 2015 · 2 comments
Assignees

Comments

@JosephTremoulet
Copy link
Contributor

Need to generate an appropriate landingpad for each catch-protected region.
Need to update call generation to generate invoke with edge to landingpad as well.

Part of #13.

@JosephTremoulet JosephTremoulet self-assigned this Feb 19, 2015
This was referenced Feb 19, 2015
@JosephTremoulet JosephTremoulet added this to the Sprint 82 milestone Apr 20, 2015
@JosephTremoulet
Copy link
Contributor Author

I've tagged this as Sprint 82 since it's what I'm currently working on, but the work is going to go into the EH branch first since more pieces will be needed before we catching exceptions will work at run-time.

JosephTremoulet added a commit to JosephTremoulet/llilc that referenced this issue Apr 22, 2015
Add a hook, fgEnterRegion, used during first-pass flow-graph construction
to perform any necessary client actions for setting up regions.

Implement fgEnterRegion in GenIR to create a landing pad for each
protected region.  Clauses are added for catch handlers in the landing
pad; other handler types are stubbed out.

Update FlowGraphSuccessorEdgeList to report a nominal edge from any
handler-protected block to its handler block (even if no throwing
instructions have been inserted into the source block yet); this
conservative model is what the base Reader class is expecting in terms of
EH flow (and in particular, this ensures that handlers are visited when
determining reachable blocks to decide which blocks to run pass 2 over).

Remove setupBlockForEH now that its functionality has been incorporated
into fgEnterRegion.

Update leave processing to generate a call to llvm.eh.endcatch whenever a
catch handler is exited.

Closes dotnet#66
JosephTremoulet added a commit to JosephTremoulet/llilc that referenced this issue Apr 22, 2015
Add a hook, fgEnterRegion, used during first-pass flow-graph construction
to perform any necessary client actions for setting up regions.

Implement fgEnterRegion in GenIR to create a landing pad for each
protected region.  Clauses are added for catch handlers in the landing
pad; other handler types are stubbed out.

Update FlowGraphSuccessorEdgeList to report a nominal edge from any
handler-protected block to its handler block (even if no throwing
instructions have been inserted into the source block yet); this
conservative model is what the base Reader class is expecting in terms of
EH flow (and in particular, this ensures that handlers are visited when
determining reachable blocks to decide which blocks to run pass 2 over).

Remove setupBlockForEH now that its functionality has been incorporated
into fgEnterRegion.

Update leave processing to generate a call to llvm.eh.endcatch whenever a
catch handler is exited.

Closes dotnet#66
JosephTremoulet added a commit to JosephTremoulet/llilc that referenced this issue Apr 23, 2015
Add a hook, fgEnterRegion, used during first-pass flow-graph construction
to perform any necessary client actions for setting up regions.

Implement fgEnterRegion in GenIR to create a landing pad for each
protected region.  Clauses are added for catch handlers in the landing
pad; other handler types are stubbed out.

Update FlowGraphSuccessorEdgeList to report a nominal edge from any
handler-protected block to its handler block (even if no throwing
instructions have been inserted into the source block yet); this
conservative model is what the base Reader class is expecting in terms of
EH flow (and in particular, this ensures that handlers are visited when
determining reachable blocks to decide which blocks to run pass 2 over).

Remove setupBlockForEH now that its functionality has been incorporated
into fgEnterRegion.

Update leave processing to generate a call to llvm.eh.endcatch whenever a
catch handler is exited.

Closes dotnet#66
@JosephTremoulet JosephTremoulet removed this from the Sprint 82 milestone Apr 28, 2015
@JosephTremoulet
Copy link
Contributor Author

Clearing Sprint 82 milestone since this is now checked in to the EH branch (#491). Leaving issue open since it's not in master.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant