0
我只是想知道,我在文档 中的任何地方搜索过,但LLVM是否支持非具体类型?支持LLVM中的非具体“iN”类型
通过非具体的我的意思是,直到运行时输入类似于“iN”,然后可能运行一种monomorphization pass(请参见下面的示例)以将“iN”类型具体化为“i56”,具体取决于运行时参数。
我不要希望使用LLVM ORC JIT API,它可以简化所有事情,但不是我想要使用的东西。
以下是我需要应用的转换的示例场景。 (请注意,下面的语言是Im试图在LLVM中构建编译器的自定义语言)。
(可以有很多棘手的情况下,但是这是一个基本的例子场景。 我已经考虑在AST水平构建SSA形式为我定制的语言,但我想作出之前探讨在LLVM IR任何可能的选择我自己定制的SSA表格)
Before Transformation -
(bits(datasize)) AddWithCarry(Boolean a)
{
integer datasize =if a
then 5;
else 9;
bits(datasize) res ;
return res;
}
(integer)main()
{
test(argv[1]); // command line argument
}
//===============================
After Transformation
(bits(datasize)) AddWithCarry(Boolean a)
{
if a
then
bits(5) res ;
return res;
else
bits(9) res ;
return res;
}
(integer)main()
{
test(argv[1]); // command line argument
}
我知道JIT的用法,那会更简单。但是,我需要在不使用JIT的情况下执行此操作,所以我想知道是否有办法在不为我的自定义语言制作自定义SSA的情况下执行此操作... – mal
对不起,我的意思是我的语言AST的自定义SSA表单。 – mal