llvm解释器可以处理c ++异常吗?

时间:2015-08-20 07:07:24

标签: c++ exception-handling llvm interpreter

我的源代码是这样的:

TEST.CPP:

void func(){
   throw "abc";
}

int main(){
try{
   func();
}

catch(...){
}
}
  1. 我用clang

    编译了代码
    clang -S -emit-llvm test.cpp
    
  2. 然后使用lli

    执行
    lli -force-interpreter test.ll
    
  3. 然后坠毁:

      

    char const*

    类型的未捕获异常终止

    我正在使用macbook(llvm3.6)。

1 个答案:

答案 0 :(得分:2)

答案是肯定的。

  • 使用clang++而不是clang
  • 编译C ++代码
  • 删除选项-force-interpreter
  • 添加选项-jit-enable-eh

我修改了一点你的测试:

#include <stdio.h>
void func(){
       throw "test";
}

int main(){
    try{
           func();
    }

    catch(...){
        printf("Gotcha\n");
    }
}

结果:

  

$ clang ++ -S -emit-llvm test.cpp
  $ lli -jit-enable-eh test.ll
  疑难杂症