I had the same issue as both of you when I was implementing this for my backend. In LowerCall you can get the callee prototype info when the Callee SDValue is a <span class="pygments-p"></span><span class="pygments-n">GlobalAddressSDNode</span><span class="pygments-o"> doing </span><span class="pygments-p"></span><span class="pygments-n">cast</span><span class="pygments-o"><</span><span class="pygments-n">Function</span><span class="pygments-o">></span><span class="pygments-p">(</span><span class="pygments-n">G</span><span class="pygments-o">-></span><span class="pygments-n">getGlobal</span><span class="pygments-p">()</span><span class="pygments-p">) (where G is </span><span class="pygments-n">GlobalAddressSDNode</span> <span class="pygments-o">*</span><span class="pygments-n">G</span> <span class="pygments-o">=</span> <span class="pygments-n">dyn_cast</span><span class="pygments-o"><</span><span class="pygments-n">GlobalAddressSDNode</span><span class="pygments-o">></span><span class="pygments-p">(</span><span class="pygments-n">Callee</span><span class="pygments-p">)</span><span class="pygments-p">), but this won't work when it is a </span><span class="pygments-p"></span><span class="pygments-n">ExternalSymbolSDNode</span>, for that case i had to add additional info into the <span class="pygments-n">ISD</span><span class="pygments-o">::</span><span class="pygments-n">OutputArg struct to know the real size of the splitted argument.<br>
</span>