0

LLVM で 5 要素のベクトル加算プログラムを作成しようとしていますが、結果のベクトル全体を返す方法がわかりません。私のコードは以下で、エラーは

LLVM エラー: main() の戻り値の型が無効です

@veca = global [5 x i32] [i32 1, i32 2, i32 3, i32 4, i32 5]
@vecb = global [5 x i32] [i32 4, i32 6, i32 9, i32 2, i32 4]

define [5 x i32]* @vector_add([5 x i32]* %vec1, [5 x i32]* %vec2)
{
    entry:
    %vecc = alloca [5 x i32]
    br label %loop

    loop:
    %i  = phi i32 [0, %entry], [%nexti, %loop]
    %nexti = add i32 %i, 1
    %ptra = getelementptr [5 x i32]* %vec1, i64 0, i32 %i
        %loada = load i32* %ptra
    %ptrb = getelementptr [5 x i32]* %vec2, i64 0, i32 %i
    %loadb = load i32* %ptrb
    %added = add i32 %loada, %loadb
    %ptr = getelementptr [5 x i32]* %vecc, i32 0, i32 %i
    store i32 %added, i32* %ptr
    %eq = icmp eq i32 %i, 4
    br i1 %eq, label %loop, label %exit

    exit:
    ret [5 x i32]* %vecc
}

define [5 x i32] @main()
{
    %answer = call [5 x i32]* @vector_add([5 x i32]* @veca, [5 x i32]* @vecb)
    %ans = load [5 x i32]* %answer
    ret [5 x i32] %ans
}
4

1 に答える 1

1

この IR 自体には何の問題もありません - で問題なくコンパイルできますllc。LLVM は標準の署名をExecutionEngine期待しているため、問題はおそらく JIT または解釈しようとすることです。main

int main()
于 2013-06-07T17:36:06.853 に答える