# nochmal CFLAGS

## flammenflitzer

Hallo

Ich habe mich geraume Zeit nicht mehr mit dem Thema beschäftigt.

Nachdem ich eine zeit lang

```
 CHOST="x86_64-pc-linux-gnu"

 CFLAGS="-mtune=nocona"

 CFLAGS="${CFLAGS} -march=nocona"

 CFLAGS="${CFLAGS} -O2"

 CFLAGS="${CFLAGS} -combine"

 CFLAGS="${CFLAGS} -falign-functions=0"

 CFLAGS="${CFLAGS} -falign-jumps=0"

 CFLAGS="${CFLAGS} -falign-labels=0"

 CFLAGS="${CFLAGS} -falign-loops=0"

 CFLAGS="${CFLAGS} -fearly-inlining"

 CFLAGS="${CFLAGS} -ffunction-cse"

 CFLAGS="${CFLAGS} -fgcse-after-reload"

 CFLAGS="${CFLAGS} -fgcse-lm"

 CFLAGS="${CFLAGS} -fkeep-static-consts"

 CFLAGS="${CFLAGS} -floop-optimize2"

 CFLAGS="${CFLAGS} -fmerge-constants"

 CFLAGS="${CFLAGS} -fno-ident"

 CFLAGS="${CFLAGS} -fomit-frame-pointer"

 CFLAGS="${CFLAGS} -fprefetch-loop-arrays"

 CFLAGS="${CFLAGS} -frename-registers"

 CFLAGS="${CFLAGS} -fweb"

 CFLAGS="${CFLAGS} -mmmx"

 CFLAGS="${CFLAGS} -msse"

 CFLAGS="${CFLAGS} -msse2"

 CFLAGS="${CFLAGS} -msse3"

 CFLAGS="${CFLAGS} -msse4"

 CFLAGS="${CFLAGS} -m80387"

 CFLAGS="${CFLAGS} -pipe"

 CFLAGS="${CFLAGS} -s"

 LDFLAGS="-Wl,-O4"

 LDFLAGS="${LDFLAGS} -Wl,--as-needed"

 LDFLAGS="${LDFLAGS} -Wl,--enable-new-dtags"

 LDFLAGS="${LDFLAGS} -Wl,-s"

 LDFLAGS="${LDFLAGS} -Wl,--sort-common"

 LDFLAGS="${LDFLAGS} -Wl,-z"

 LDFLAGS="${LDFLAGS} -Wl,now"

 CXXFLAGS="${CFLAGS}"

 Makeopts="-j1 -s"

 FORKS="2"
```

(hatte so meine Zweifel, ob das wirklich etwas bringt, außer längerem kompilieren)

habe ich jetzt schon ziemlich lange 

```

CHOST="x86_64-pc-linux-gnu"

CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer -s -mfpmath=sse -msse2 -mmmx"

CXXFLAGS="${CFLAGS}"
```

Jetzt bin ich gerade über info2flags gestolpert.

```
[localhost olaf # info2flags

Giving up

CHOST="x86_64-pc-linux-gnu"

CFLAGS="-m64 -O3 -pipe -fPIC"

CXXFLAGS="-m64 -O3 -pipe -fPIC"

```

 Ist das denn performanter?

```
localhost olaf # cat /proc/cpuinfo

model name      : Intel(R) Core(TM)2 Duo CPU     E6750  @ 2.66GHz

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr lahf_lm
```

----------

## gimpel

 *flammenflitzer wrote:*   

> Jetzt bin ich gerade über info2flags gestolpert.
> 
> ```
> [localhost olaf # info2flags
> 
> ...

 

Das ist eher einfach nur totaler Unfug.

----------

## blu3bird

 *gimpel wrote:*   

>  *flammenflitzer wrote:*   Jetzt bin ich gerade über info2flags gestolpert.
> 
> ```
> [localhost olaf # info2flags
> 
> ...

 

++

Das wäre auf jeden Fall performanter:

```
CC="icc"

CXX="icpc"

CFLAGS="-O3 -Ob2 -tpp7 -xT -parallel -complex_limited_range -rcd -openmp -fp_port -ipo -static -no-prec-div"

CXXFLAGS="${CFLAGS}"

CPPFLAGS="${CFLAGS}"
```

Hätte aber den Nachteil, dass 70% aller Anwedungen nicht kompilieren und von den 30% die kompilieren haben nochmal 80% unvorhersehbare Laufzeitfehler...

Ps: Irgendwie vermiss ich bei Deinem 1. Post -funroll-loops *g*

----------

## energyman76b

 *flammenflitzer wrote:*   

> 
> 
> CHOST="x86_64-pc-linux-gnu"
> 
> CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer -s -mfpmath=sse -msse2 -mmmx"
> ...

 

die besten Flags in deinem Fall:

CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

und natürlich

MAKEOPTS="-j3"

und LDFLAGS nicht gesetzt.

Kompiliert am schnellsten, läuft am schnellsten, ist am stabilsten.

-s?

Wer hat dir das geflüstert?

----------

## schachti

 *energyman76b wrote:*   

> 
> 
> die besten Flags in deinem Fall:
> 
> CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
> ...

 

-fomit-frame-pointer ist bei AMD64 bereits ab -O2 automatisch aktiviert und damit als CFLAG redundant.

----------

## energyman76b

 *schachti wrote:*   

>  *energyman76b wrote:*   
> 
> die besten Flags in deinem Fall:
> 
> CFLAGS="-march=nocona -O2 -pipe -fomit-frame-pointer"
> ...

 

auch bei nocona?

----------

## schachti

Ich bin mir eigentlich relativ sicher, ja. Selbst herausfinden kann man das leicht, indem man die Option -v benutzt. Und im gentoo-wiki taucht -fomit-frame-pointer für nocona ebenfalls nicht auf.

----------

## flammenflitzer

Dann taugt das Tool info2flags wohl nichts.

Übrigens hatte ich bei meinem alten amd64 ein AMD pdf, in dem u.a. die möglichen und die empfohlenen Compileroptionen für gcc 4 enthalten waren. Habe ich für meinen Intel Dual Core noch nicht gefunden.

----------

## Klaus Meier

 *flammenflitzer wrote:*   

> Dann taugt das Tool info2flags wohl nichts.
> 
> Übrigens hatte ich bei meinem alten amd64 ein AMD pdf, in dem u.a. die möglichen und die empfohlenen Compileroptionen für gcc 4 enthalten waren. Habe ich für meinen Intel Dual Core noch nicht gefunden.

 

Wenn du die Datei noch hast, dann wirf sie ganz schnell weg. Totaler Unfung. Gibt in der Doku zu Gentoo da eine ganz eindeutige Aussage, finde es aber gerade nicht. Jedenfalls ist es genau das, was energyman76b geschrieben hat.

-fomit-frame-pointer sollte nach meinen Informationen bei 64-bit Versionen automatisch aktiv sein, aber die Aussage kann auch aus einer Zeit stammen, als 64-bit ausschließlich AMD war.

----------

## flammenflitzer

Ich wollte damit sagen, das ich von Intel noch kein Dokument gefunden habe, wo eine Aussage vom Hersteller zur Problematik enthalten ist.

----------

## gimpel

 *flammenflitzer wrote:*   

> Dann taugt das Tool info2flags wohl nichts.

 

Nicht wirklich. GCC kann das selber besser, seit 4.2 iirc.

-march=native

----------

