[LLVMdev] dynamic passes

reed kotler rkotler at mips.com
Fri Mar 29 17:08:02 PDT 2013


I already have this working but I don't know until right before the pass 
runs if it's relevant.

The passes are machine function passes.

So I have to ask the question in runOnMachineFunction.

It works fine except that I have to have already added the pass.

This can change from function to function.

These are major passes like instruction selection.

Anyway, I think that so far it seems that you can't dynamically add 
passes and without that,  I think all the other solutions are roughly 
equivalent.

On 03/29/2013 04:34 PM, Chuck Zhao wrote:
> In this case, you can specialize a few pass manager objects, each for 
> a specific sub target type.
>
> E.g.
> PassManager pm0 = .. ; // for mips32;
> PassManager pm1 = .. ; // for mips16;
>
> ...
> if(function needs to run on mips32)
>   pm0.run();
> else
> if(function needs to run on mips16)
> pm1.run();
> ...
>
> Of course, you have to figure out the suitable sets of functions for 
> each sub target.
>
> Hope it helps.
>
> Chuck
>
> On 3/29/2013 4:28 PM, reed kotler wrote:
>> not in this case.
>>
>> the architecture is changing on a per function pass.
>>
>> mips32->mips16->mips16....
>>
>> same issue would be for
>>
>> arm->thumb1->arm
>>
>> On 03/29/2013 04:26 PM, Chuck Zhao wrote:
>>> Can you do this instead:
>>>
>>> PassManager pm = ...;
>>> pm.add(other needed passes);
>>> ...
>>> if(arch you are interested)
>>>   pm.add(your pass);
>>> ...
>>> pm.run();
>>>
>>>
>>> Chuck
>>>
>>>
>>> On 3/29/2013 4:15 PM, Reed Kotler wrote:
>>>> This is what I'm doing right now and the only issues that came up 
>>>> in internal review is that we have to create the pass object now 
>>>> for things
>>>> that we are unlikely to need.
>>>>
>>>> On 03/29/2013 04:05 PM, Chuck Zhao wrote:
>>>>> I think you will have to add the passes anyway before asking the pass
>>>>> manager object to run.
>>>>> In addition, you can specify some dependency, so that that non 
>>>>> relevant
>>>>> pass will not have a chance to run. The PassManager should be able to
>>>>> figure that out given the runtime conditions.
>>>>>
>>>>> Chuck
>>>>>
>>>>> On 3/29/2013 3:38 PM, reed kotler wrote:
>>>>>> Is it possible to dynamically add and remove passes once llc 
>>>>>> starts to
>>>>>> run?
>>>>>>
>>>>>> Currently I have to add some machine function passes and only once
>>>>>> they are running, I have them return right away because they are not
>>>>>> relevant at that time. For example, mips16 does not use the delay 
>>>>>> slot
>>>>>> optimizer but now I would need to add the pass all the time just in
>>>>>> case someone specified that a particular function be compiled as 
>>>>>> mips32.
>>>>>>
>>>>>> It seems from the pass manager that you can add and subtract passes
>>>>>> but I was unclear as to whether this was something you have to do
>>>>>> before the pass manager starts to run passes.
>>>>>>
>>>>>> Tia.
>>>>>>
>>>>>> Reed
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> 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