Hi zgim,

Fara sa am pretentia ca sunt vre-un guru in C programming, pot satzi confirm 
ca nivelul maxim de optimizare pentru care poti sa optezi la compilare este 
O3. Adica, vreu sa zic ca treaba cu O4 de care vorbeai, nu ajuta cu nimic mai 
mult decit face O3.

Iata mai jos un mic exemplu....
[alex@rudolf gcc]$ touch test.c
[alex@rudolf gcc]$ gcc -O3 -S -fverbose-asm test.c
[alex@rudolf gcc]$ ls
test.c  test.s
[alex@rudolf gcc]$ touch altest.c
[alex@rudolf gcc]$ gcc -O4 -S -fverbose-asm altest.c
[alex@rudolf gcc]$ ls
altest.c  altest.s  test.c  test.s
[alex@rudolf gcc]$ diff test.s altest.s > diffile
[alex@rudolf gcc]$ cat diffile 
1c1
<       .file   "test.c"
---
>       .file   "altest.c"
4c4
< # options passed:  -O3 -fverbose-asm
---
> # options passed:  -O4 -fverbose-asm
[alex@rudolf gcc]$

Un alt exemplu:
[alex@rudolf gcc]$ cat test.c 
#include <stdio.h>
int main()
{
printf("Hello Word!");
}

[alex@rudolf gcc]$ gcc -O3 test.c -o test.o
[alex@rudolf gcc]$ ls -l
total 16
-rw-rw-r--    1 alex     alex           57 IAN 14 20:36 test.c
-rwxrwxr-x    1 alex     alex        11779 IAN 14 20:37 test.o
[alex@rudolf gcc]$ mv test.o test.o.orig
[alex@rudolf gcc]$ gcc -O4 test.c -o test.o
[alex@rudolf gcc]$ ls -l
total 28
-rw-rw-r--    1 alex     alex           57 IAN 14 20:36 test.c
-rwxrwxr-x    1 alex     alex        11779 IAN 14 20:37 test.o
-rwxrwxr-x    1 alex     alex        11779 IAN 14 20:37 test.o.orig
[alex@rudolf gcc]$ diff test.o test.o.orig > tata
[alex@rudolf gcc]$ cat tata 
[alex@rudolf gcc]$

Cred ca este suficient...de altfel nici man gcc nu spune altceva.

Revenind la intrebarea lui Doom (de ce nu se compileaza kernelul-2.4.20-ac2 
cu gcc-2.96-110 daca introduc -O3 -funroll-loops in Makefile) iata mai jos 
mesajul de eroare!

/usr/src/linux-2.4.20-ac2/arch/i386/lib/lib.a \
        --end-group \
        -o vmlinux
arch/i386/kernel/kernel.o(.fixup+0x895): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(.fixup+0x89e): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(__ex_table+0x650): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(__ex_table+0x658): undefined reference to `local 
symbols in discarded section .text.exit'
make: *** [vmlinux] Error 1
[root@dinu linux]#

Chiar daca fac curatenie inainte de compilare (make mr. poper ;-) ) aceiasi 
eroare!
Daca scot -funroll-loops si las numai O3 primesc aproape aceiasi eroare:
 
/usr/src/linux-2.4.20-ac2/arch/i386/lib/lib.a \
        --end-group \
        -o vmlinux
arch/i386/kernel/kernel.o(.fixup+0x826): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(.fixup+0x82f): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(__ex_table+0x608): undefined reference to `local 
symbols in discarded section .text.exit'
arch/i386/kernel/kernel.o(__ex_table+0x610): undefined reference to `local 
symbols in discarded section .text.exit'
make: *** [vmlinux] Error 1
[root@dinu linux]# 

Deci, cu gcc-2.96-110 , la mine NU se poate optimiza O3!
Cu gcc3.1-5 merge fara gretzuri dar noul kernel este cam cu 20% mai mare!

Intrebarea mea ramine: Care dintre cele 2 kernele e mai bun, mai frumos, mai 
destept, etc...? Cel compilat cu gcc-2.96-110 si -O2 sau cel compilat cu 
gcc3.1-5 -O3 -funroll-loops!

Regards,
Alex

---

On Tuesday 14 January 2003 18:31, you wrote:
> Personal, acasa folosesc gcc-3.2.1, kernel-2.4.20-xfs pe un sistem PII
> Deschutes.
> Obishnuiesc sa folosesc urmatoarele optimizari:
>
> in arch/i386/Makefile:
> ifdef CONFIG_M686
> CFLAGS += -march=pentium2 -mcpu=pentium2
> endif
>
> iar in Makefile din / mai am bagate de mine -O4 -ffast-math.
>
> Cam atat. Pentru marime este optiune -Os, eu nu o folosesc.
>
> ---
> Pentru dezabonare, trimiteti mail la
> [EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
> REGULI, arhive si alte informatii: http://www.lug.ro/mlist/


---
Pentru dezabonare, trimiteti mail la 
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/


Raspunde prin e-mail lui