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

Xinfinity xinfinity_a at yahoo.com
Fri Mar 4 01:33:38 PST 2011




Nick Lewycky wrote:
> 
> 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
> 
> 

You are right, changing the optimizers is not a good idea, I will modify my
pass to make it O3 friendly. 
If I run opt -O3 first and my pas after, there is a significant drop of
performance. 
I use my pass to create multiple versions of regions of code and to insert a
selection mechanism that 
communicates with a runtime system. Callbacks to the runtime system must be
patched and they are inserted as inline asm to have a fixed structure and
size. O3 changes the position of the inline asm or duplicates them.
But it is better to work more on my pass, than to change all optimization
passes in LLVM. 

Thanks.

Alexandra

-- 
View this message in context: http://old.nabble.com/metadata-to-inform-the-optimizers-that-some-code-should-stay-unchanged-tp31039471p31066087.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.




More information about the llvm-dev mailing list