2013-02-12 166 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