Я пытаюсь создать ИК-код llvm вручную (ввод функции). У меня проблемы с созданием инструкции сравнения:
auto *var0 = Builder->CreateLoad(StrPtr);
var0->getType()->dump(); // i8 addrspace(8)*
Builder->getInt8(0)->getType()->dump(); // i8
auto *cmp5 = Builder->CreateICmpEQ(var0, Builder->getInt8(0));
Я не могу сравнить между var0 и Builder-> getInt8 (0), поскольку дамп указывает, что они имеют разные типы. В частности, я получаю эту ошибку во время выполнения:
opt: /llvm/include/llvm/IR/Instructions.h:1174: void
llvm::ICmpInst::AssertOK(): Assertion `getOperand(0)->getType() ==
getOperand(1)->getType() && "Both operands to ICmp instruction are not of
the same type!"' failed.
Как мне решить эту проблему?