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

我的源代码是这样的:

TEST.CPP:

void func(){
   throw "abc";
}

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

catch(...){
}
}

>我用clang编译代码

clang -S -emit-llvm test.cpp

>然后用lli解决它:

lli -force-interpreter test.ll

然后坠毁:

terminating with uncaught exception of type char const*

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

最佳答案 答案是肯定的.

>使用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
Gotcha

点赞