[llvm-dev] Malloc signature errors

zealain via llvm-dev llvm-dev at lists.llvm.org
Thu Jun 17 01:47:39 PDT 2021


Hello

I am trying to insert malloc calls in my function pass, yet it keeps
complaining about the parameter type:

Call parameter type does not match function signature!
i64 4096
 i8*  %malloccall = tail call i8* @malloc(i64 4096)

Comparing this to a call generated by simply having a malloc in the C code,
I cannot spot significant differences. The following (generated by clang)
works just fine:

%2 = call noalias i8* @malloc(i64 4096) #2

Why does one work but the other doesn't? Below is the code I use to
generate the instruction:

Type *int8Type = Type::getInt8Ty(this->currentFunction->getContext());
Type *int64Type = Type::getInt64Ty(this->currentFunction->getContext());

auto allocSize = ConstantInt::get(int64Type, 4096);

Instruction* mallocInstr =
CallInst::CreateMalloc(this->currentFunction->getEntryBlock().getFirstNonPHI(),
                                                  int8Type->getPointerTo(),
int8Type, allocSize,
                                                  nullptr, nullptr, "");

I tried changing up the types already but didn't find a combination that
works yet. Any hints would be appreciated.

Regards,
Z
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210617/4a9ed14d/attachment.html>


More information about the llvm-dev mailing list