<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;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 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:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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="#0563C1" vlink="#954F72" style="text-justify-trim:punctuation">
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">You are describing "function inlining" which is an optimization done by LLVM.  This optimization is performed on the intermediate representation (IR), not at the source level, if that's what you need to know.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">--paulr<o:p></o:p></span></p>
<p class="MsoNormal"><a name="_MailEndCompose"><span style="color:#1F497D"><o:p> </o:p></span></a></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> cfe-dev [mailto:cfe-dev-bounces@lists.llvm.org]
<b>On Behalf Of </b>Yonggang Chen via cfe-dev<br>
<b>Sent:</b> Thursday, June 22, 2017 9:03 PM<br>
<b>To:</b> cfe-dev@lists.llvm.org<br>
<b>Subject:</b> [cfe-dev] how to replace function call with actual code of function body?<br>
<b>Importance:</b> High<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN">Hello all,<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">int main()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">    auto n = 9;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">    auto x = cacul(n);<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:21.0pt;text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">return 0;<br>
</span><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">}</span><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">int cacul(int x)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">         return x * x + 3;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">}</span><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN">Suppose I have function
<span style="background:silver;mso-highlight:silver">main()</span>, in which <span style="background:silver;mso-highlight:silver">
cacul(int x)</span> is called.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN">Now I want Clang help me do this:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">int main()<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">    auto n = 9;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">    auto x = n * n + 3;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-indent:21.0pt;text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">return 0;<br>
</span><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">}<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">int cacul(int x)<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">{<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">         return x * x + 3;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;background:silver;mso-highlight:silver;mso-fareast-language:ZH-CN">}</span><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN">That’s to say, remove reference to
<span style="background:silver;mso-highlight:silver">cacul</span>. Can Clang help me do that? If so, how to do it?<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN">Best regards<o:p></o:p></span></p>
<p class="MsoNormal" style="text-autospace:none"><span style="font-size:10.5pt;color:#0D0D0D;mso-fareast-language:ZH-CN">Yonggang Chen</span><span style="font-size:9.5pt;font-family:Consolas;color:#0D0D0D;mso-fareast-language:ZH-CN"><o:p></o:p></span></p>
</div>
</div>
</body>
</html>