<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Profile guided optimization with gcc</title>
	<atom:link href="http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/feed/" rel="self" type="application/rss+xml" />
	<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/</link>
	<description></description>
	<lastBuildDate>Sat, 17 Dec 2011 20:14:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: Vladislav Vaintroub</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1644</link>
		<dc:creator><![CDATA[Vladislav Vaintroub]]></dc:creator>
		<pubDate>Tue, 28 Jul 2009 10:57:45 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1644</guid>
		<description><![CDATA[Domas,
the above was merely a  speculation :)
I do know only how Microsoft compiler does PGO and this works via generating/optimizing code by linker rather than compiler. Dunno if GCC is using similar technology.

How cross-module inlining works for Microsoft compiler.The clue is that executable code is generated at link time rather than at compile time.

Compiler still produces *.obj files, but those are  output of the compiler frontend in some internal form, not the executable code.   Linker acts as compiler backend for all these .obj file. Since linker has enough info about module interdependencies and with profiles also knows hot places, it can inline a hot function in another module.

This sounds somewhat similar -combine flag for GCC you mentioned. During code generation GCC will know about the whole program behavior and could actually make &quot;cross-module&quot; inlining decisions.]]></description>
		<content:encoded><![CDATA[<p>Domas,<br />
the above was merely a  speculation :)<br />
I do know only how Microsoft compiler does PGO and this works via generating/optimizing code by linker rather than compiler. Dunno if GCC is using similar technology.</p>
<p>How cross-module inlining works for Microsoft compiler.The clue is that executable code is generated at link time rather than at compile time.</p>
<p>Compiler still produces *.obj files, but those are  output of the compiler frontend in some internal form, not the executable code.   Linker acts as compiler backend for all these .obj file. Since linker has enough info about module interdependencies and with profiles also knows hot places, it can inline a hot function in another module.</p>
<p>This sounds somewhat similar -combine flag for GCC you mentioned. During code generation GCC will know about the whole program behavior and could actually make &#8220;cross-module&#8221; inlining decisions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sergei Golubchik</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1643</link>
		<dc:creator><![CDATA[Sergei Golubchik]]></dc:creator>
		<pubDate>Tue, 28 Jul 2009 07:19:40 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1643</guid>
		<description><![CDATA[Which is not really surprising.

When reading the blog post I was thinking, exactly, that to make use of it every user would have to profile *his* application, under his typical load. When optimizing for everybody the speedup will be much smaller, if at all.]]></description>
		<content:encoded><![CDATA[<p>Which is not really surprising.</p>
<p>When reading the blog post I was thinking, exactly, that to make use of it every user would have to profile *his* application, under his typical load. When optimizing for everybody the speedup will be much smaller, if at all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Laurynas</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1642</link>
		<dc:creator><![CDATA[Laurynas]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 18:35:49 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1642</guid>
		<description><![CDATA[A certain commercial DBMS vendor has tried profile guided optimizations and has never shipped optimized binaries. Apparently +7% in one workload results in -7% on another.]]></description>
		<content:encoded><![CDATA[<p>A certain commercial DBMS vendor has tried profile guided optimizations and has never shipped optimized binaries. Apparently +7% in one workload results in -7% on another.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Toby</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1641</link>
		<dc:creator><![CDATA[Toby]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 18:04:00 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1641</guid>
		<description><![CDATA[Sun Studio C/C++ also supports PGO, as apparently do Intel&#039;s and various others.
http://technopark02.blogspot.com/2005/07/sun-studio-cc-profile-feedback.html]]></description>
		<content:encoded><![CDATA[<p>Sun Studio C/C++ also supports PGO, as apparently do Intel&#8217;s and various others.<br />
<a href="http://technopark02.blogspot.com/2005/07/sun-studio-cc-profile-feedback.html" rel="nofollow">http://technopark02.blogspot.com/2005/07/sun-studio-cc-profile-feedback.html</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Domas Mituzas</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1640</link>
		<dc:creator><![CDATA[Domas Mituzas]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 17:01:51 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1640</guid>
		<description><![CDATA[Vlad, nooooeessss! does it really inline cross-module? I wonder how that works (and if it does). On the other hand, frame pointers are still there... ;-)]]></description>
		<content:encoded><![CDATA[<p>Vlad, nooooeessss! does it really inline cross-module? I wonder how that works (and if it does). On the other hand, frame pointers are still there&#8230; ;-)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Vladislav Vaintroub</title>
		<link>http://dom.as/2009/07/27/profile-guided-optimization-with-gcc/#comment-1639</link>
		<dc:creator><![CDATA[Vladislav Vaintroub]]></dc:creator>
		<pubDate>Mon, 27 Jul 2009 16:54:51 +0000</pubDate>
		<guid isPermaLink="false">http://mituzas.lt/?p=554#comment-1639</guid>
		<description><![CDATA[domas, I&#039;m afraid this will totally trash  fno-omit-frame-pointers you praised  so much in the previous post:)  PGO is also able to inline cross-module, so the callstacks on hot places could be a big surprise too]]></description>
		<content:encoded><![CDATA[<p>domas, I&#8217;m afraid this will totally trash  fno-omit-frame-pointers you praised  so much in the previous post:)  PGO is also able to inline cross-module, so the callstacks on hot places could be a big surprise too</p>
]]></content:encoded>
	</item>
</channel>
</rss>

