# Your CXXFLAGS ... can break packages

## musv

Hallo, 

zur Zeit setz ich einen neuen Rechner auf. Und nach langem langem und ewigen Lesen hab ich mich dazu entschlossen, ffast-math in die CFLAGS mit reinzunehmen - einfach mal zum Testen. Jetzt krieg ich bei jedem Compilieren die Meldung:

 *emerge irgendwas wrote:*   

> Your CFLAGS contains "-ffast-math" which can break packages. 
> 
> Your CXXFLAGS contains "-ffast-math" which can break packages.

 

Tja, dass das experimentell ist, weiß ich selbst. Aber langsam und noch sicherer nervt mich die Meldung, weil die sogar bei virtuellen Paketen (z.b. virtual/jre...) kommt. Wie kann ich das abstellen (außer -ffast-math aus den CFLAGS rausnehmen)?

----------

## doedel

Ich weiss, das ist jetzt doch ein bisschen OT und mit Sicherheit nicht das, was du gefragt hast, aber das will ich noch kurz loswerden.

Verwende -ffast-math nur auf Testsystemen! Es kann nicht nur Pakete abschiessen, es wird Pakete abschiessen!

Ich habe mal eine Zeit lang mit allen möglichen optimierungen herumgespielt, als ich angefangen habe mehr über Compiler herauszufinden. Mit -ffast-math bekam ich dauernd segfaults und als ich den gcc versucht habe damit zu compilieren ging das erst gar nicht bis zum Ende durch.

 *Quote:*   

> -ffast-math
> 
>     Sets -fno-math-errno, -funsafe-math-optimizations,
> 
>     -fno-trapping-math, -ffinite-math-only, -fno-rounding-math, -fno-signaling-nans and fcx-limited-range.
> ...

 

(Quelle: http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Optimize-Options.html )

Es heisst ja schon immer dass -O3 sehr Fehleranfälligen Code Produziert, aber das ist lange nichts im Vergleich zu -ffast-math.

Wie gesagt, ich würde es echt nur auf Testsystemen versuchen!

----------

## misterjack

Da gilt für Intel-Prozessoren. Bei AMD kann man -ffast-math problemlos verwenden. https://forums.gentoo.org/viewtopic-p-4383821.html#4383821 - hab mich da eines besseren belehren lassen und habe UTgamers Flags mittlerweile selber problemlos am laufen.

Die Hinweismeldung seitens Portage habe ich aber nicht.

----------

## musv

Genau das war auch der Grund, warum ich ffast-math reingenommen hab. Scheinbar hat UTGamer da schon bei Einigen erfolgreiche Missionierungsarbeit geleistet. 

Was ich bisher noch nicht von seinen Flags übernommen hab, sind mfpmath=sse,387 und m64. Aber gut, das sind dann wahrscheinlich eher Philosophiefragen. 

Doedel: sqlite baut nicht mit ffast-math. Das war bisher das einzige Paket. 

Außerdem soll das System sowieso auf Performance getrieben werden, auch wenn das vielleicht dämlich klingt. Bisherige Ansätze dafür sind: 

Unnötige Daemons rauslassen (z.B. HAL)

Dateisystem für Root: Reiser4 mit diversen Optimierungsplugins.

SquashFS für Portage

CCache nur für große Pakete (amarok, gcc, glibc, gtk+, imagemagick, kdelibs, openoffice, php qt, seamonkey, xulrunner,...)

Compilieren hauptsächlich über tmpfs, um die Fragmentierung des Dateisystems zu vermeiden (Ja, auch oder besonders Reiser4 fragmentiert gerne nach einiger Zeit)

Wenn alles installiert ist, kommt noch ein Prelinking hinzu

Und damit bleibt halt noch immer die nervige Warnmeldung.

----------

## mv

In der Tat ist -ffast-math bei weitem nicht so schlimm wie sein Ruf (auch auf x86 nicht) und erhöht die Geschwindigkeit oft dramatisch (ganz im Gegensatz zu -mfpmath=sse,387, das Berechnungen nicht nur ungenauer sondern auch häufig langsamer macht). Wofür man es nicht benutzen sollte:

 *-ffast-math böse wrote:*   

> sci-libs/*
> 
> sci-mathematics/*
> 
> app-office/openoffice
> ...

 

----------

## misterjack

 *-ffast-math böse wrote:*   

> app-office/openoffice
> 
> dev-lang/python 
> 
> 

 

Da ich die zweie installiert habe, warum soll man sie nicht mit -ffast-math kompilieren? Gibt hier keine Probleme mit den Paketen.

----------

## schachti

 *misterjack wrote:*   

> Bei AMD kann man -ffast-math problemlos verwenden.

 

Ich habe mich jetzt nicht durch 9 Seiten Thread gewühlt, meine mich aber zu erinnern, dass das nur für 64-Bit-Systeme gilt?

----------

## mv

 *misterjack wrote:*   

>  *-ffast-math böse wrote:*   app-office/openoffice
> 
> dev-lang/python 
> 
>  
> ...

 

Das weiß ich leider nicht mehr - die Liste habe ich meinem package.cflags-File entnommen, in das ich nur Einträge mache, wenn es einmal Ärger aufgrund der cflags gab oder zu erwarten war. Es kann aber auch sein, dass das nur für frühere Versionen der Pakete galt.

----------

## mv

 *schachti wrote:*   

>  *misterjack wrote:*   Bei AMD kann man -ffast-math problemlos verwenden. 
> 
> Ich habe mich jetzt nicht durch 9 Seiten Thread gewühlt, meine mich aber zu erinnern, dass das nur für 64-Bit-Systeme gilt?

 

Ich habe den Thread jetzt auch nicht durchgelesen, aber ich wüsste nicht, was -ffast-math mit 64-Bit oder 32-Bit zu tun hat: Hauptsächlich geht es bei -ffast-math darum, dass automatisch mathematische Formeln anders geklammert werden (was aufgrund von Rundungsfehlern z.B. ein anderes Ergebnis liefern kann) und dass nicht alle Exceptions (Division durch 0, Wurzel negativer Zahl usw) auf die per Sprachstandard definierte Weise behandelt werden.

----------

