» »

GCC 4.0!

GCC 4.0!

64202 ::

Neverjetno, gcc 4.0 je zunaj, debian pa se 3.x ne podpira uradno :)
stran na gcc.gnu.org

Gandalfar ::

Ubuntu je ze na 4.0 (razen kernela, ki se ne dela dobro)

Nerdor ::

62404: saj veš kakšna je politika Debiana, vse mora biti "Rock solid!" pa tudi če je pra pra stara verzija. :)
... for lifetime!

Gandalfar ::

Nerdor: kar seveda ni res. To velja samo za stable.

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?

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?
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! :D :D

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

64202 ::

Aha, vidim zdaj, pi nima veze z ML-jem :)

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:

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 :)

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! :))

OwcA ::

@Nerdor: za VC++ (in ICC) si poglej /Fa stikalo.
Otroška radovednost - gonilo napredka.

Nerdor ::

Hvala! Potešili ste mojo radovednost. :))
... for lifetime!

64202 ::

Se ena za getoojase :)
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 ;)

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?

64202 ::

I am NaN, I am a free man!

BigWhale ::

Enmau bomo se pocakal. :)

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!

BigWhale ::

Nehaj rajcat, ker me ze prsti srbijo... ;>

dr.J ::

Hmm, gfortran mi še zmeraj kreshne na par podprogramih enega paketa.

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

BigWhale ::

Rabis prevajalnik, ne nujno gcc 4.0

Upostevaj moj nasvet, imel bos manj problemov in tezav.

Nerdor ::

Če mu pa hormoni ne pustijo miru in mora sprobat nov gcc :D
... 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;)

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...

64202 ::

Kako si pa pognal build?
I am NaN, I am a free man!

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

BigWhale ::

find / -name fixopts.o

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
I am NaN, I am a free man!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

OpenSUSE pomoč

Oddelek: Operacijski sistemi
11933 (826) Redorange
»

pomoč pri C

Oddelek: Programiranje
231591 (1262) slovenc1234
»

[C++] Linux

Oddelek: Programiranje
171964 (1384) CCfly
»

Cnet "network simulator"

Oddelek: Programska oprema
132637 (2519) urbecar
»

Problemi s compilanjem v Linux Slackware 9.1

Oddelek: Operacijski sistemi
351910 (1629) Vesoljc

Več podobnih tem