<div dir="ltr"><div><br></div>To create a stack based (local) 64 bit integer in LLVM IR, I used: <div>Value *var = builder.CreateAlloca(Type::getInt64Ty(Ctx)); </div><div><br></div><div>I wish to pass this variable to a function "void foo(unsigned long)". I created the signature of function foo() as follows:</div><div><div>Constant *func = M->getOrInsertFunction("foo", Type::getVoidTy(Ctx),Type::getInt64Ty(Ctx), NULL);</div><div><br></div><div>To pass the newly created variable var to foo():</div><div><div>Value *args[] = {var};</div><div>builder.CreateCall(func, args);</div></div><div><br></div><div>However, LLVM backend throws assertion error: "Calling a function with a bad signature!"</div><div><br></div><div>If I print the types of the following:</div><div>errs() << *Type::getInt64Ty(Ctx) << ", " << *var->getType();</div><div><br></div><div>I can see first one is i64 and second one is i64*; hence the incompatibility. How can I create an alloca variable of type i64?</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><span><div><div dir="ltr"><p>Thanks & Regards,</p>
<div>Dipanjan</div></div></div></span></div></div>
</div></div>