[LLVMdev] inserting a fucntion call at the end of basic bloc

Duncan Sands baldrick at free.fr
Tue Apr 26 05:08:02 PDT 2011


Hi Nabila,

>         Now when i tried this pass an error says:
>         Wrong type for attribute noalias
>         tail call void @consume(i32 noalias 3, i32* @y) nounwind
>
>
>     noalias is only for arguments of pointer type.  You probably meant it to
>     be on the second argument rather than the first.  I suggest you correct
>     your code that adds the attribute.
>
>     Ciao, Duncan.
>
>
> no my fucntion is
> void consume(int nb_into_bloc, int *nb_total)
> the second is a pointer
> here is how I pass the parameters
>   Instruction* ii = i->getTerminator();
>   const int n = cast <int> (i->size());
>   ConstantInt* inValue = ConstantInt::get(Type::getInt32Ty(Context), n);
>   std::vector<Value*> int32_16_params;
>   int32_16_params.push_back(inValue);
>   int32_16_params.push_back(gvar_int32_y);
>   CallInst* int32_16 = CallInst::Create(func_consume, int32_16_params.begin(),
> int32_16_params.end(), "", ii);

where did the "noalias" attribute and "tail call" (rather than "call") come
from?  Are you setting these yourself or running some optimization pass after
your pass?

Ciao, Duncan.



More information about the llvm-dev mailing list