[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