dschuff added inline comments.

================
Comment at: lib/CodeGen/CGCXXABI.h:610
 
+struct CatchRetScope final : EHScopeStack::Cleanup {
+  llvm::CatchPadInst *CPI;
----------------
Should be `public`?


================
Comment at: lib/CodeGen/CGCleanup.h:630
   static const EHPersonality MSVC_CxxFrameHandler3;
+  static const EHPersonality GNU_Wasm_CPlusCPlus;
 
----------------
We might consider having 2 personalities: one for use with builtin exceptions, 
and other for emulated exceptions? I'm imagining that with this style of IR we 
might be able to do emulated exceptions better than we have for emscripten 
today. We don't have to think about that now, but maybe the name of the 
personality might reflect it: e.g. `GNU_Wasm_CPlusPlus_Native` (or builtin) vs 
`GNU_Wasm_CPlusPlus_Emulated` (or external).


================
Comment at: lib/CodeGen/CGException.cpp:1236
+  // them, we should unwind to the next EH enclosing scope. We generate a call
+  // to rethrow function here to do that.
+  if (EHPersonality::get(*this).isWasmPersonality() && !HasCatchAll) {
----------------
Why do we need to call `__cxa_rethrow` instead of just emitting a rethrow 
instruction intrinsic to unwind?


================
Comment at: lib/CodeGen/CGException.cpp:1534
+  // In case of wasm personality, we need to pass the exception value to
+  // __clang_call_terminate function.
+  if (getLangOpts().CPlusPlus &&
----------------
Why?


Repository:
  rC Clang

https://reviews.llvm.org/D44931



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to