[LLVMdev] should AlwaysInliner inline this case?
    Philip Reames 
    listmail at philipreames.com
       
    Sun Jan  4 15:32:30 PST 2015
    
    
  
On 01/04/2015 12:04 AM, Liu Xin wrote:
>
> %294= callfloatbitcast (float(float, float*)* @__gpu_modff to 
> float(float, i64)*)(float%293, i64 %preg.212.addr.0)
>
> as you may know, some gpu backends don't support function call. we 
> need to make sure to inline all functions here. however, Inliner can 
> not figure out that this is a valid callsite in this form. actually, 
> it is.  in C words, cast a function and then call should be treat as 
> callsite, right?
>
Generally, the inliner doesn't do much with indirect calls, but given 
there is no simpler canonical case here, I expect we'll have to.
Its possible we might even want to define this as a direct call. I'm not 
sure what the expectations are with regards to the type of the function 
being called and the type of the callsite.  I suspect a lot of code 
would get confused if getCalledFunction returned __gpu_modff with it's 
unbitcast type.  That's possibly something we should fix though.
We'll want to get other folks input here, but a small patch to the 
inliner to handle this case would seem reasonable to me.
Philip
    
    
More information about the llvm-dev
mailing list