[PATCH] D42092: implement C++ dr388 for the Itanium C++ ABI: proper handling of catching exceptions by reference

Richard Smith - zygoloid via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 15 21:59:41 PST 2018

rsmith added inline comments.

Comment at: lib/CodeGen/ItaniumCXXABI.cpp:3878
+      } else {
+        // FIXME: We could filter out definitely-unreachable catch handlers.
+        EHCatchScope *LaterCatchScope =
There are a lot of other optimizations possible here. For example: if there are no later catches, and no enclosing EH scopes, we can just `resume` (before the `__cxa_begin_catch`) call. Or if the first such later catch will definitely catch the exception (eg, `catch (int*&) {} catch (int*) {}`), we could branch directly to it.

I'm inclined to think we should keep the frontend emission simpler and implement these cases as EHABI-aware middle-end optimization passes if we care enough about them.

  rC Clang


More information about the cfe-commits mailing list