LLVM异常抛出(LLVM exception throwing)

2019-08-16 21:50发布

我看过这个博客帖子 , 该文档页面和这个例子 ,但我还是不明白如何抛出使用LLVM的IRBuilder对于非C ++面向语言的基本异常。

从我的理解,我必须:

  • 创建llvm::Value包含扔值。
  • 呼叫“功能”,传递给它扔值。 该功能将不会返回。

这个例子是使用系统倒带功能( _Unwind_RaiseException ),以抛出一个C ++异常,我真的不知道如何使用我自己养函数,而不是(因为我只需要抛出一个对象的指针)。 我在想什么?

Answer 1:

简短的回答是, _Unwind_RaiseException不是C ++ -特定功能。 它来自libunwind库,并允许抛出任何类型的异常。

更多细节上可以找到这些博客文章 。



Answer 2:

当你不希望使用现有的C ++异常处理的基础设施,你需要复制它的部分为您的语言。

您可以使用C开卷机在执行编译-RT (或显著更复杂的之一的libstdc ++ ),并调用开卷的的libstdc ++开始。



文章来源: LLVM exception throwing