Here's an updated draft. I included most of your remarks and added some
notes on append-flags/filter-flags. I'll probably submit it to Ulrich
around the end of the week.

--- Draft BEGIN ---
<section>
<title>CFLAGS</title>
<body>

<p>
Being able to tune the CFLAGS is part of one of the core principles of
Gentoo: let the user be in control. Being in control brings both
benefits and problems and CFLAGS tuning is not an exception.
</p>
<p>
The recent upgrade to gcc-4.1.1 for x86 and amd64 users changed the
landscape. Users that spent some time tuning their CFLAGS with gcc-3.4.6
might find out that an upgrade to gcc-4.1.1 leaves them with an unstable
system. Example of this are :
<ul>
<li>nss_ldap stopped working with <c>-ffast-math</c> (reported to break
many packages changing with the actual gcc version)</li>
<li><c>-fvisibility-inlines-hidden</c> still breaks some code</li>
<li>if you used gcc-4.0, <c>-ftree-loop-linear</c> now breaks in
gcc-4.1(at least with mesa)</li>
<li>again for gcc-4.0 users, <c>-ftree-vectorize</c> is known to be
broken in gcc-4.1 (at least for x86 and ppc, amd64 users seem to be
safe)</li>
<li><c>-fforce-addr</c> and <c>-fweb</c> break regularly on x86 with
video libraries or graphic processing apps which use hand-optimised ASM</li>
</ul>
</p>
<p>
Users with unsupported CFLAGS (see the <uri
link='http://gentoo-wiki.com/CFLAGS_matrix'>CFLAGS matrix</uri> for
example) might want to return to safe CFLAGS (see <uri
link='http://gentoo-wiki.com/Safe_Cflags'>Safe CFLAGS</uri>) if recent
updates caused them stability problems. On the other hand, more
adventurous users might want to experiment with CFLAGS that didn't work
properly with gcc-3.4.6... As always, the user is in control.
</p>
<p>
Notes:
<ul>
<li>The gcc man page contains warnings for some unsafe optimization
options. You should read it carefully when you experiment with CFLAGS or
upgrade GCC on a CFLAGS-customized Gentoo.</li>
<li>Some options that are unsafe in the system-wide CFLAGS might be
added automatically in some ebuilds if the developper deems them safe
(by redefining CFLAGS or using append-flags of the flag-o-matic eclass).
For example <c>-ffast-math</c> is added by the xmame/xmess ebuilds on
most architectures even if you don't put it in your CFLAGS.</li>
<li>You might get an idea of the stability issues of a specific
optimization option by running: <c>find /usr/portage -name '*.ebuild'|
xargs grep -- '-<your-risky-optimization-option>'</c>. It takes quite
some time, but might be enlightening: look for the 'filter-flags'.</li>
</ul>
</p>
</body>
</section>
--- Draft END ---

Lionel
-- 
gentoo-dev@gentoo.org mailing list

Reply via email to