Я пытаюсь создать значение LLVM типа структуры. Я использую интерфейс LLVM-C и найти функцию:Как создать значение структуры LLVM?
LLVMValueRef LLVMConstStruct (LLVMValueRef *ConstantVals, unsigned Count, LLVMBool Packed)
Это прекрасно работает, если все члены постоянной стоимости, создаваемой LLVMConstXXX(), он будет генерировать код, как:
store { i32, i32, i32 } { i32 1, i32 2, i32 3 }, { i32, i32, i32 }* %17, align 4
Но проблема в том случае, если член не является постоянным, он будет генерировать такие вещи, как:
%0 = call i32 @llvm.nvvm.read.ptx.sreg.tid.x()
store { i32, i32, i32 } { i32 1, i32 %0, i32 3 }, { i32, i32, i32 }* %17, align 4
И когда я посылаю этот кусок кода LLVM NVVM (Nvidia PTX бэкэнд), он говорит:
module 0 (27, 39): parse error: invalid use of function-local name
Итак, я не знаю, правильно ли это значение создания структуры. Мне нужна ценность, а не выделенная память.
У кого-нибудь есть идея?
С уважением, Сян.
Спасибо! Это работает!!! –