2
OCamlにLLVM IRにコンパイルするコンパイラを書きます。現在のプログラムは非常に簡単です:私は私のコンパイラでそれを実行するとLLVM main()の無効な戻り値タイプ
num main() {
return 0;
}
は、私は次のLLVM IRコードを取得する:
; ModuleID = 'PixMix'
source_filename = "PixMix"
@fmt = private unnamed_addr constant [4 x i8] c"%d\0A\00"
@fmt.1 = private unnamed_addr constant [4 x i8] c"%s\0A\00"
declare i32 @printf(i8*, ...)
define double @main() {
entry:
ret double 0.000000e+00
}
私はlli
にそれを渡す場合は、私は聞いています戻り値の型が無効であることを示します。そのコードを見ると、main
はdouble
と定義されています。double
が返されます。なぜ返り値の型が崩れているのですか?lli