[PATCH] D36914: Implement CFG construction for __try / __except / __leave.
Nico Weber via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 18 19:03:53 PDT 2017
thakis created this revision.
This makes -Wunreachable-code work for programs containing SEH (except for __finally, which is still missing for now).
__try is modeled like try (but simpler since it can only have a single __except or __finally), __except is fairly similar to catch (but simpler, since it can't contain declarations). __leave is implemented similarly to break / continue.
Use the existing addTryDispatchBlock infrastructure (which FindUnreachableCode() in ReachableCode.cpp uses via cfg->try_blocks_begin()) to mark things in the __except blocks as reachable.
Don't add any EH edges to the CFG for SEH. In practice, BuildOpts.AddEHEdges is always false in practice from what I can tell, and with SEH every single stmt would have to get an EH edge.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 8629 bytes
Desc: not available
More information about the cfe-commits