Forum » Programiranje » GCC 4.0!
GCC 4.0!
Nerdor ::
62404: saj veš kakšna je politika Debiana, vse mora biti "Rock solid!" pa tudi če je pra pra stara verzija.
... for lifetime!
64202 ::
Ok, predpostavmo, da vsi vemo kako delujejo debian branchi, pustmo zdaj to :)
Me je resno zagrablo en frontend sklat, torej plan:
1. Prek ene noci napisat en kompajlercic, ki nardi gcc-jev (tree?) ssa
2. gcc optimizira 1.
3. gcc optimizira 2.
4. gcc optimizira 3.
5. gcc optimizira 4.
6. gcc optimizira 5.
...
20. ultrahiter binary, da se zadevo skompajlat za (sun java + 10) arhitektur :)
Zdaj, edin problem je korak 0. Neobstojeca dokumentacija za ssa
Any ideas?
Me je resno zagrablo en frontend sklat, torej plan:
1. Prek ene noci napisat en kompajlercic, ki nardi gcc-jev (tree?) ssa
2. gcc optimizira 1.
3. gcc optimizira 2.
4. gcc optimizira 3.
5. gcc optimizira 4.
6. gcc optimizira 5.
...
20. ultrahiter binary, da se zadevo skompajlat za (sun java + 10) arhitektur :)
Zdaj, edin problem je korak 0. Neobstojeca dokumentacija za ssa
Any ideas?
noraguta ::
hmm kolikor sem našel referenc izgleda, da je vsa zadeva močno podobna malo spodobnejšemu makro sistemu z okusom pi računstva. zelo podobne stvari (transformacije nad sintaktičnim drevesom in join calculus kot je izveden v c-omega) najdeš v programskem jeziku nemerle.
Mogoče prelet kakšnih milnerjevi tekstov tudi nebi skodoval.
glede optimizacije , pa kolikot uspem razbrat , gre zgolj za arhitekturam prirejene sintaktične substitucije?
Mogoče prelet kakšnih milnerjevi tekstov tudi nebi skodoval.
glede optimizacije , pa kolikot uspem razbrat , gre zgolj za arhitekturam prirejene sintaktične substitucije?
Pust' ot pobyedy k pobyedye vyedyot!
64202 ::
Hmm, sem nekaj paperjev za tree-ssa na gcc pejdzu. Sicer ne vem ali me zezajo, samo stvari grejo tkole:
parser -> GENERIC -> GIMPLE -> SSA -> optimizacije -> RTL -> backend
Zakaj "zezajo": GIMPLE grammar zgleda isto ko C, GENERIC pa se bolj!! wtf? Saj ne da se branim!
Pa tanov gcc ma nek -fdump-tree ali nekaj podobnega, kar naj bi vrglo ven enga od vmesnih stageov v C-like obliki, slinslin! Ok, to je treba zdownloadat! :)
Drugace pa ja, nekaj poznam (oca/s)ML-ja, vsaj type sistem toliko da vem da ima C++ mocnejsega. Oziroma bolje receno, oba imata nekaj stvari ki jih drug nima :).
parser -> GENERIC -> GIMPLE -> SSA -> optimizacije -> RTL -> backend
Zakaj "zezajo": GIMPLE grammar zgleda isto ko C, GENERIC pa se bolj!! wtf? Saj ne da se branim!
Pa tanov gcc ma nek -fdump-tree ali nekaj podobnega, kar naj bi vrglo ven enga od vmesnih stageov v C-like obliki, slinslin! Ok, to je treba zdownloadat! :)
Drugace pa ja, nekaj poznam (oca/s)ML-ja, vsaj type sistem toliko da vem da ima C++ mocnejsega. Oziroma bolje receno, oba imata nekaj stvari ki jih drug nima :).
64202 ::
> glede optimizacije , pa kolikot uspem razbrat , gre zgolj za arhitekturam prirejene sintaktične substitucije?
Nad SSA (static single assignment) obliko se naj bi izvajalo en kup splosnih optimizacij, kar je novo v 4.0
Nad SSA (static single assignment) obliko se naj bi izvajalo en kup splosnih optimizacij, kar je novo v 4.0
64202 ::
Aha, vidim zdaj, pi nima veze z ML-jem :)
Kje se pa vidi povezava med pi calc. pa gcc frontendi?
Kje se pa vidi povezava med pi calc. pa gcc frontendi?
Zgodovina sprememb…
- spremenilo: 64202 ()
Brane2 ::
A ma kdo kaj pametnega o tem, koliko bolje se 4.0 obnese glede na 3.4.3 v nekem obsegu realnih primerov ?
On the journey of life, I chose the psycho path.
noraguta ::
enkratno določanje vrdnosti je je e kvivlent v imperativu ne lambda impotentnim jezikom ssa jeprakticno ekvivalent za eno eisto stvar . izogibanje re feriranu neznane vrednoti v lokalnem kontekstu. imperativnost impotenntna na ravni konkurencnosti. le to je nicesar drugega.
Pust' ot pobyedy k pobyedye vyedyot!
64202 ::
Eno pivo prevec?
Hehe, sem ze novopecen lastnik cist novga friskega shajni gcc & g++ 4.0.0!
Primer optimizacije SSA-ja:
Output C frontenda:
Po optimizaciji SSA:
No ja, nic kaj prevec kunstnega, sem pricakoval "return <ena-stevilka>". Sploh ker je bil to -O3
Hehe, sem ze novopecen lastnik cist novga friskega shajni gcc & g++ 4.0.0!
Primer optimizacije SSA-ja:
int x() { int ret,i; ret = 20; for(i=0; i<3; ++i) ret *= i; return ret; }
Output C frontenda:
x () { int D.1136; int ret; int i; ret = 20; i = 0; goto <D1134>; <D1133>:; ret = ret * i; i = i + 1; <D1134>:; if (i <= 2) { goto <D1133>; } else { goto <D1135>; } <D1135>:; D.1136 = ret; return D.1136; }
Po optimizaciji SSA:
x () { int i; int ret; <bb 0>: ret = 20; i = 0; <L0>:; ret = i * ret; i = i + 1; if (i != 3) goto <L0>; else goto <L2>; <L2>:; return ret; }
No ja, nic kaj prevec kunstnega, sem pricakoval "return <ena-stevilka>". Sploh ker je bil to -O3
64202 ::
Juhu, optimizer zna racunat
opt.:
int x() { int i = 5 * 10 * 20; int j = i * 22; return i+j; }
opt.:
x () { <bb 0>: return 23000; }
Nerdor ::
Kako pripraviš da optimajzer računa!? Zanima me tudi, kje je kolega dobil asm ekvivalentno kodo C primerom v windowsih !?
... for lifetime!
64202 ::
Za msvc ne vem zdajle, gcc pa gre tkole:
gcc -S -c x.c, da dobis assembler
gcc -O3 -fdump-tree-all -c x.c, pa dobis 69 fajlov, za vsak korak optimizacije SSA
gcc -O3 -fdump-rtl-all -c x.c (menda tako), pa dobis RTL optimizacije, samo je precej neberljivo (output spominja na lisp, sami oklepaji! )
gcc -S -c x.c, da dobis assembler
gcc -O3 -fdump-tree-all -c x.c, pa dobis 69 fajlov, za vsak korak optimizacije SSA
gcc -O3 -fdump-rtl-all -c x.c (menda tako), pa dobis RTL optimizacije, samo je precej neberljivo (output spominja na lisp, sami oklepaji! )
64202 ::
Se ena za getoojase
gcc -funroll-loops -fdump-tree-all -c x.c
int x() { int ret,i; ret = 20; for(i=0; i<3; ++i) ret *= i+1; return ret; }
gcc -funroll-loops -fdump-tree-all -c x.c
x () { <bb 0>: return 120; }
BigWhale ::
> -funroll-loops
Ce pametno programiras, potem je ta flag neuporaben, ker ne delas takih trapastih loopov ;)
Ce pametno programiras, potem je ta flag neuporaben, ker ne delas takih trapastih loopov ;)
64202 ::
Ja cak malo, tukaj se lepo vidi kako prides do 120, najboljsa dokumentacija je koda sama
Ok, resno. unroll-loops(-all?) pride v splosnem prav, ce imas procesor s pipelineom pa brez spekulativnega izvajanja kode, kali?
Ok, resno. unroll-loops(-all?) pride v splosnem prav, ce imas procesor s pipelineom pa brez spekulativnega izvajanja kode, kali?
64202 ::
Sicer g++ 4.0.0 skompajla kde v pol manj casa, kar trdi kup folkov na sleshpiki. Zdaj bom dnevno bulil samo se 1.5 ure v "g++ ...blablatrivrsticesranja..., g++ ..kjfdjkdfkj...", namesto 3 ure. Jo kak sovrazim c++
I am NaN, I am a free man!
Hormon ::
A mi kdo lahko kdo pove kako naj gcc 4.0 instaliram na racunalo?Z neta sem dol potegnil ta gcc pa sedaj ni ne vem kako naprej.Mam pa suse 9.2
BigWhale ::
Moja kristalna kugla pravi, da ga v bistvu niti ne rabis. Ce ga ne znas instalirat, potem ga ne nucas. Zelo verjetno pa ze imas kako drugo verzijo GCCja namesceno. Ce ne, jo pa lahko namestis, ker obstaja kot SUSE rpm paket.
Hormon ::
rabim ga za faks.Finta je ker mi je prej delalo, zdaj pa ko sem enkrat nekaj gor instaliral se za ta c pa mi od takrat ne dela.
Hormon ::
To mi vedno izpise:
Enpac@linux:~/SOLA/vaja> gcc nekaj.c -o nekaj
bash: gcc: command not found
Enpac@linux:~/SOLA/vaja> gcc nekaj.c -o nekaj
bash: gcc: command not found
BigWhale ::
Rabis prevajalnik, ne nujno gcc 4.0
Upostevaj moj nasvet, imel bos manj problemov in tezav.
Upostevaj moj nasvet, imel bos manj problemov in tezav.
Nerdor ::
Če mu pa hormoni ne pustijo miru in mora sprobat nov gcc
... for lifetime!
Zgodovina sprememb…
- spremenil: Nerdor ()
Hormon ::
Za resil tezavo, vendar sem samo obnovil sistem.Sem dol potegnil one rpm pa ni in ni slo.Vseeno hvala.
Nerdor, mene hormoni vedno mucijo;)
Nerdor, mene hormoni vedno mucijo;)
Ezekiel ::
Zdravo!
Verjetno sodi kam drugam, ampak vseeno:
ali je imel kdo težave pri "buildanju" gcc 4.0.0 na AMD Athlon 64 sistemu, Fedora Core 3, 64 bit?
Napake v stilu:
...
gcc: fixopts.o: No such file or directory
make[2]: *** [full-stamp] Error 1
make[2]: Leaving directory `/home/ezekiel/gcc-4.0.0/tmp/build-x86_64-unknown-linux-gnu/fixincludes'
make[1]: *** [all-build-fixincludes] Error 2
make[1]: Leaving directory `/home/ezekiel/gcc-4.0.0/tmp'
make: *** [stage1-bubble] Error 2
predvsem ti "fixincludes" mi delajo težave...
Verjetno sodi kam drugam, ampak vseeno:
ali je imel kdo težave pri "buildanju" gcc 4.0.0 na AMD Athlon 64 sistemu, Fedora Core 3, 64 bit?
Napake v stilu:
...
gcc: fixopts.o: No such file or directory
make[2]: *** [full-stamp] Error 1
make[2]: Leaving directory `/home/ezekiel/gcc-4.0.0/tmp/build-x86_64-unknown-linux-gnu/fixincludes'
make[1]: *** [all-build-fixincludes] Error 2
make[1]: Leaving directory `/home/ezekiel/gcc-4.0.0/tmp'
make: *** [stage1-bubble] Error 2
predvsem ti "fixincludes" mi delajo težave...
Ezekiel ::
../configure --enable-shared --disable-multilib --with-cpu=athlon64 --enable-checking
potem
make
in rezultat
...
config.status: creating config.h
make[1]: Entering directory `/home/ezekiel/gcc-4.0.0/builddir/fixincludes'
gcc -g -O2 -o fixincl fixincl.o fixtests.o fixfixes.o server.o procopen.o fixlib.o fixopts.o ../libiberty/libiberty.a
gcc: fixincl.o: No such file or directory
gcc: fixtests.o: No such file or directory
gcc: fixfixes.o: No such file or directory
gcc: server.o: No such file or directory
gcc: procopen.o: No such file or directory
gcc: fixlib.o: No such file or directory
gcc: fixopts.o: No such file or directory
make[1]: *** [full-stamp] Error 1
make[1]: Leaving directory `/home/ezekiel/gcc-4.0.0/builddir/fixincludes'
make: *** [all-fixincludes] Error 2
potem
make
in rezultat
...
config.status: creating config.h
make[1]: Entering directory `/home/ezekiel/gcc-4.0.0/builddir/fixincludes'
gcc -g -O2 -o fixincl fixincl.o fixtests.o fixfixes.o server.o procopen.o fixlib.o fixopts.o ../libiberty/libiberty.a
gcc: fixincl.o: No such file or directory
gcc: fixtests.o: No such file or directory
gcc: fixfixes.o: No such file or directory
gcc: server.o: No such file or directory
gcc: procopen.o: No such file or directory
gcc: fixlib.o: No such file or directory
gcc: fixopts.o: No such file or directory
make[1]: *** [full-stamp] Error 1
make[1]: Leaving directory `/home/ezekiel/gcc-4.0.0/builddir/fixincludes'
make: *** [all-fixincludes] Error 2
64202 ::
Zgleda da si sel buildat znotraj source direktorija (../configure). V dok. pise, da je edina garantirana pot, ce to naredis zunaj, torej:
$ tar xjvf gcc....tar.bz2
$ mkdir gccbuild
$ cd gccbuild
$ ../gcc-4.0.0/configure --xyz...
$ make bootstrap
$ tar xjvf gcc....tar.bz2
$ mkdir gccbuild
$ cd gccbuild
$ ../gcc-4.0.0/configure --xyz...
$ make bootstrap
I am NaN, I am a free man!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | OpenSUSE pomočOddelek: Operacijski sistemi | 925 (818) | Redorange |
» | pomoč pri COddelek: Programiranje | 1582 (1253) | slovenc1234 |
» | [C++] LinuxOddelek: Programiranje | 1956 (1376) | CCfly |
» | Cnet "network simulator"Oddelek: Programska oprema | 2610 (2492) | urbecar |
» | Problemi s compilanjem v Linux Slackware 9.1Oddelek: Operacijski sistemi | 1889 (1608) | Vesoljc |