[LLVMdev] metadata to inform the optimizers that some code should stay unchanged

Nick Lewycky nicholas at mxc.ca
Thu Mar 3 21:43:52 PST 2011


Xinfinity wrote:
>
>
> Hello LLVM,
>
> I am working on some passes that perform code transformations. Since I am
> interested in performance, I apply the O3 passes, right after my pass.
> However, the optimization passes modify the code inserted by my pass in an
> undesirable way. As far I know, there is no way to prevent the optimizers
> from optimizing some regions of code. So what I intend to do is to attach
> metadata to the instructions contained in basicblocks that I want to remain
> unchanged, and to modify some of the optimization passes to be aware of the
> metadata.

Please don't. Metadata is the wrong tool for anything where the metadata 
can't be discarded and correctness maintained.

Is there any reason you can't run opt -O3 first and your pass second? 
What is your pass actually doing and why does running the optimizations 
break it?

Nick

  For now, I am interested only in passes that would affect the
> control flow graph, so for a start I modify the Simplify CFG pass and the
> jump threading pass, but I will check which other passes might duplicate the
> code, merge blocks etc.
>
> Do you think the performance will drop significantly if some regions of code
> are not optimized ? And do you consider this modification would be of any
> use to the community?
>
> Thank you.
> Alexandra
>




More information about the llvm-dev mailing list