【发布时间】:2014-08-24 12:39:43
【问题描述】:
如何根据条件生成运行时错误?
我有一种支持范围整数类型的语言。例如,一种类型是从 0 到 99 的整数,另一种类型是从 -100 到 -20 的整数,依此类推。类型由用户定义。每种类型的范围在编译时是已知的。
如果用户执行的算术运算导致整数超出其定义的范围,我想抛出运行时错误。如何使用 LLVM 的 C++ API 做到这一点?
【问题讨论】:
-
是你好奇的运行时异常,还是如何插入检查?
-
运行时异常。我使用比较指令 (ICmpInst) 执行检查,然后使用带有 2 个已定义块的分支指令,1 个用于错误,1 个用于正常行为。
-
并且,为了进一步澄清,这是否必须支持捕获这些异常,或者在域中可以接受只是出错?
-
好的,所以只需调用一个 C 函数即可:
printf("Invalid arithmetic operation"); exit(-1);太粗糙了,或者您只是需要帮助构建调用? -
这可能是你真正的问题——我不知道;在我看来,这超出了 LLVM 的范围。一个建议可能是寻找
__builtin_exit()或类似的。或者看看llvm如何编译exit();