<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoPlainText>A change has just been committed that changes the interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall.  Instead of passing a mess of parameters to these functions, a new structure has been created that encapsulates these parameters.  The motivation is that additional fields can be added to this structure (with appropriate changes to SelectionDAGBuilder for populating the new fields) without forcing an ABI change on each and every target.  In-tree targets have been updated accordingly, so no change is required.  However, if you have an out-of-tree target that is following trunk, please be aware that this *will* break your build.  Please see any in-tree target for the new interface and how to access the values that used to be available as individual function parameters.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>As a quick example, the ARM implementation for LowerCall is now:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><span style='font-family:"Courier New"'>SDValue<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>ARMTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>                             SmallVectorImpl<SDValue> &InVals) const {<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SelectionDAG &DAG                     = CLI.DAG;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  DebugLoc &dl                          = CLI.DL;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SmallVector<ISD::OutputArg, 32> &Outs = CLI.Outs;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SmallVector<SDValue, 32> &OutVals     = CLI.OutVals;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SmallVector<ISD::InputArg, 32> &Ins   = CLI.Ins;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SDValue Chain                         = CLI.Chain;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  SDValue Callee                        = CLI.Callee;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  bool &isTailCall                      = CLI.IsTailCall;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  CallingConv::ID CallConv              = CLI.CallConv;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  bool doesNotRet                       = CLI.DoesNotReturn;<o:p></o:p></span></p><p class=MsoPlainText><span style='font-family:"Courier New"'>  bool isVarArg                         = CLI.IsVarArg;<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The CallLoweringInfo struct now contains all parameters that were originally available as parameters.  The InVals vector was left as a parameter since it is the responsibility of the LowerCall implementation to fill it and does not represent input information about the call (unlike IsTailCall which is an in/out parameter, and hence added to the new struct).<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText><o:p> </o:p></p></div>
<DIV>
<HR>
</DIV>
<DIV>This email message is for the sole use of the intended recipient(s) and may 
contain confidential information.  Any unauthorized review, use, disclosure 
or distribution is prohibited.  If you are not the intended recipient, 
please contact the sender by reply email and destroy all copies of the original 
message. </DIV>
<DIV>
<HR>
</DIV>
<P></P>
</body></html>