2013-02-12 163 views
14

我已閱讀this blog post,this documentation pagethis example,但我仍然不明白如何使用LLVM的IRBuilder爲非C++語言編寫基本異常。LLVM異常拋出

從我的理解,我必須:

  • 創建llvm::Value包含扔值。
  • 呼叫「功能」,傳遞給它扔值。這個函數不會返回。

的例子是使用系統倒帶功能(_Unwind_RaiseException),以拋出一個C++異常,我真的不知道如何使用我自己養的功能,而不是(因爲我只需要拋出一個對象指針)。我錯過了什麼?

回答

3

簡而言之,_Unwind_RaiseException不是C++特定的函數。它來自libunwind庫,允許拋出任何類型的異常。

更多詳細資料請參見these blog posts

0

由於您不想使用現有的C++異常處理基礎結構,因此您需要爲您的語言複製其中的一部分。

您可以在compiler-rt(或libstdc++中顯着更復雜的一個)中使用C開卷器的實現,並在libstdc++中調用開卷器。

+0

所有這些鏈接現已死亡... – 2015-01-18 20:12:55