[LLVMdev] Adding function attributes

Duncan Sands baldrick at free.fr
Mon Nov 5 00:03:43 PST 2012


Hi Arnaldo,

> I am coding a ModulePass in which I want to add an AlwaysInline attribute to
> every function so that they can be later inlined by the -always-inline pass.

why not just do the inlining yourself.  The always inliner code is at
lib/Transforms/IPO/InlineAlways.cpp, and it's pretty short.

> However, the changes to the function seem to be lost after exiting my pass
> because the AlwaysInline attribute is not in the output LLVM IR.
>
> Maybe the function iterator passed by the module object actually points to
> copies of the functions?

As far as I can see your code should work.  Most likely it isn't being run
at all - did you check that your runOnModule method is actually being called?

Ciao, Duncan.

>
> Any help is much appreciated
>
>
> Code
> ====
> virtual bool runOnModule(Module& m)
> {
>      Module* module = &m;
>
>      for (Module::iterator functionIter = module->begin(); functionIter !=
> module->end(); functionIter++)
>          functionIter->addFnAttr(llvm::Attributes::AlwaysInline);
>
>      return true;
> }
>
>
> Command line
> ===========
> clang -O0 -S -emit-llvm -o test.S test.c && opt -S -mem2reg -load <path to lib>
> -mypass < test.S > test_opt.S
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>




More information about the llvm-dev mailing list