On Sunday, 18 March 2018 at 14:15:37 UTC, Stefan Koch wrote:
On Sunday, 18 March 2018 at 12:59:06 UTC, tipdbmp wrote:
I can't read assembly but it seems to me that it doesn't:
https://godbolt.org/g/PCsnPT
I think C++'s sort can take a "function object" that can get
inlined.
Correct it does not get in-lined.
Even with -O3 it does not.
The reason is that the code the sort instantiation produces is
too big for the inliner cost function.
If you have a look at the the cg file produced when you specify
-vcg-ast you can see that it's a massive amount of code.
I believe the original poster was asking about the *predicate* to
sort, which is indeed inlined with optimizations on.
(@tipdbmp: The string gets turned into the function
_D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTiTiZQCdFNaNbNiNfKiKiZb. No references to it remain with -O3; the LLVM IR obtained with -output-ll might be easier to read than assembly.)
— David