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