[llvm-branch-commits] [llvm-branch] r83032 - /llvm/branches/eh-experiment/include/llvm/Intrinsics.td

Bill Wendling isanbard at gmail.com
Mon Sep 28 16:59:01 PDT 2009


Author: void
Date: Mon Sep 28 18:59:00 2009
New Revision: 83032

URL: http://llvm.org/viewvc/llvm-project?rev=83032&view=rev
Log:
Add comment explaning why this is needed.

Modified:
    llvm/branches/eh-experiment/include/llvm/Intrinsics.td

Modified: llvm/branches/eh-experiment/include/llvm/Intrinsics.td
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/eh-experiment/include/llvm/Intrinsics.td?rev=83032&r1=83031&r2=83032&view=diff

==============================================================================
--- llvm/branches/eh-experiment/include/llvm/Intrinsics.td (original)
+++ llvm/branches/eh-experiment/include/llvm/Intrinsics.td Mon Sep 28 18:59:00 2009
@@ -289,6 +289,17 @@
 
 //===------------------ Exception Handling Intrinsics----------------------===//
 //
+
+// The `eh.personality' intrinsics hold a pointer to the "personality"
+// function. The main purpose being to facilitate performing exception handling
+// explicitly. I.e., we won't be going through exception handling tables. The
+// reason for doing this is that LLVM's IR isn't sufficient enough (at the
+// present time) to encode the exception handling data and also keep it
+// up-to-date during transformations. The current way is to encode the EH data
+// in the CFG, and then do a sort of pattern matching algorithm to try to
+// recover this data. However, that falls apart very quickly. This way is robust
+// for all transformations.
+
 def int_eh_personality_i32 : Intrinsic<[llvm_i32_ty], [llvm_ptr_ty]>;
 def int_eh_personality_i64 : Intrinsic<[llvm_i64_ty], [llvm_ptr_ty]>;
 





More information about the llvm-branch-commits mailing list