[cfe-dev] how to replace function call with actual code of function body?

Yonggang Chen via cfe-dev cfe-dev at lists.llvm.org
Sat Jun 24 21:20:26 PDT 2017


Hello paulr,

 

>> I think Yonggang might be looking for a refactoring/source modification, rather than an optimization, but I'm not sure.

Yes, you are right. That’s what I meant. I’m looking for a refactoring modification.

 

Put the method's body into the body of its callers and remove the method.

int getRating() {

  return (moreThanFiveLateDeliveries()) ? 2 : 1;

}

boolean moreThanFiveLateDeliveries() {

  return _numberOfLateDeliveries > 5;

}

 

Then, the source code becomes the following:

int getRating() {

  return (_numberOfLateDeliveries > 5) ? 2 : 1;

}

 

And it seems someone had achieved this, please check this link:

 <https://github.com/goldsborough/clang-expand> clang-expand

https://github.com/goldsborough/clang-expand

 

Best regards

Yonggang Chen

 

From: David Blaikie [mailto:dblaikie at gmail.com] 
Sent: Sunday, June 25, 2017 12:36 AM
To: Robinson, Paul <paul.robinson at sony.com>; Yonggang Chen <cyg19891102 at 163.com>
Cc: cfe-dev at lists.llvm.org
Subject: Re: [cfe-dev] how to replace function call with actual code of function body?

 

 

On Fri, Jun 23, 2017, 12:52 PM Robinson, Paul via cfe-dev <cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org> > wrote:

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.

 

I think Yonggang might be looking for a refactoring/source modification, rather than an optimization, but I'm not sure.

 

--paulr

 

From: cfe-dev [mailto:cfe-dev-bounces at lists.llvm.org <mailto:cfe-dev-bounces at lists.llvm.org> ] On Behalf Of Yonggang Chen via cfe-dev
Sent: Thursday, June 22, 2017 9:03 PM
To: cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org> 
Subject: [cfe-dev] how to replace function call with actual code of function body?
Importance: High

 

Hello all,

 

int main()

{

    auto n = 9;

    auto x = cacul(n);

return 0;
}

 

int cacul(int x)

{

         return x * x + 3;

}

 

Suppose I have function main(), in which cacul(int x) is called.

Now I want Clang help me do this:

 

int main()

{

    auto n = 9;

    auto x = n * n + 3;

return 0;
}

 

int cacul(int x)

{

         return x * x + 3;

}

 

That’s to say, remove reference to cacul. Can Clang help me do that? If so, how to do it?

 

Best regards

Yonggang Chen

_______________________________________________
cfe-dev mailing list
cfe-dev at lists.llvm.org <mailto:cfe-dev at lists.llvm.org> 
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20170625/8a19f049/attachment.html>


More information about the cfe-dev mailing list