abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 19:55 | IT novinky

    Americký výrobce čipů Intel propustí 15 procent zaměstnanců (en), do konce roku by jich v podniku mělo pracovat zhruba 75.000. Firma se potýká s výrobními problémy a opouští také miliardový plán na výstavbu továrny v Německu a Polsku.

    Ladislav Hagara | Komentářů: 4
    včera 17:33 | Komunita

    MDN (Wikipedie), dnes MDN Web Docs, původně Mozilla Developer Network, slaví 20 let. V říjnu 2004 byl ukončen provoz serveru Netscape DevEdge, který byl hlavním zdrojem dokumentace k webovým prohlížečům Netscape a k webovým technologiím obecně. Mozille se po jednáních s AOL povedlo dokumenty z Netscape DevEdge zachránit a 23. července 2005 byl spuštěn MDC (Mozilla Developer Center). Ten byl v roce 2010 přejmenován na MDN.

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | Nová verze

    Wayback byl vydán ve verzi 0.1. Wayback je "tak akorát Waylandu, aby fungoval Xwayland". Jedná se o kompatibilní vrstvu umožňující běh plnohodnotných X11 desktopových prostředí s využitím komponent z Waylandu. Cílem je nakonec nahradit klasický server X.Org, a tím snížit zátěž údržby aplikací X11.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | Nová verze

    Byla vydána nová verze 6.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově se lze k síti Tor připojit pomocí mostu WebTunnel. Tor Browser byl povýšen na verzi 14.5.5. Thunderbird na verzi 128.12.0. Další změny v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    24.7. 14:33 | IT novinky

    Meta představila prototyp náramku, který snímá elektrickou aktivity svalů (povrchová elektromyografie, EMG) a umožňuje jemnými gesty ruky a prstů ovládat počítač nebo různá zařízení. Získané datové sady emg2qwerty a emg2pose jsou open source.

    Ladislav Hagara | Komentářů: 0
    24.7. 14:22 | Nová verze

    Byla vydána (𝕏) nová verze 25.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 25.7 je Visionary Viper. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    24.7. 13:33 | IT novinky

    Před 40 lety, 23. července 1985, společnost Commodore představila první počítač Amiga. Jednalo se o počítač "Amiga od Commodore", jenž byl později pojmenován Amiga 1000. Mělo se jednat o přímou konkurenci počítače Apple Macintosh uvedeného na trh v lednu 1984.

    Ladislav Hagara | Komentářů: 2
    24.7. 06:00 | IT novinky

    T‑Mobile USA ve spolupráci se Starlinkem spustil službu T-Satellite. Uživatelé služby mohou v odlehlých oblastech bez mobilního signálu aktuálně využívat satelitní síť s více než 650 satelity pro posílání a příjem zpráv, sdílení polohy, posílání zpráv na 911 a příjem upozornění, posílání obrázků a krátkých hlasových zpráv pomocí aplikace Zprávy Google. V plánu jsou také satelitní data.

    Ladislav Hagara | Komentářů: 9
    23.7. 21:55 | Komunita

    Společnost Proxmox Server Solutions stojící za virtualizační platformou Proxmox Virtual Environment věnovala 10 000 eur nadaci The Perl and Raku Foundation (TPRF).

    Ladislav Hagara | Komentářů: 2
    23.7. 21:22 | Bezpečnostní upozornění

    Byla vydána nová verze 2.4.65 svobodného multiplatformního webového serveru Apache (httpd). Řešena je bezpečnostní chyba CVE-2025-54090.

    Ladislav Hagara | Komentářů: 0
    Kolik tabů máte standardně otevřeno ve web prohlížeči?
     (29%)
     (25%)
     (5%)
     (5%)
     (5%)
     (2%)
     (2%)
     (28%)
    Celkem 129 hlasů
     Komentářů: 16, poslední včera 15:31
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    21.6.2010 12:10 mektige
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Překladače umí překvapit... Tady je pěkná prezentace s příklady jejich chytristik: http://dl.fefe.de/optimizer-isec.pdf
    21.6.2010 12:18 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    gcc pro AVR umí taky pěkný věci. Onehdá jsem jenom nevěřícně koukal na kód, kterej vypadal nějak takhle:
    add r18, r18
    add r18, r18
    mov r19, r18
    add r18, r18
    add r19, r18
    add r19, r18
    ; ... zde instrukce, které výsledek přičtou k indexovacímu registru
    Kdyby někoho zajímalo, co to je, tak tenhle kód provádí násobení 20 (za předpokladu, že výsledek nebude větší než 255). Tedy něco, co se efektivněji udělá kódem:
    ldi r19, 20
    mul r18, r19 ; 2 tiky
    ; ... zde instrukce, které výsledek přičtou k indexovacímu registru
    eor r1, r1
    Samotné násobení tedy překladač vyrobí o polovinu delší, než by stačilo. A viděl jsem i "zajímavější" věci, které dokázal překladač vymyslet...
    Quando omni flunkus moritati
    21.6.2010 12:30 Actuator | blog: actuator
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    A není to první řešení náhodou rychlejší?
    21.6.2010 12:31 Actuator | blog: actuator
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Ééé jsem slepej, 2 tiky, už vidím ...
    21.6.2010 12:39 Vskutečnosti Saýc | skóre: 7
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    A urcite netrva mul dele? Na AVR na kterem jsme pracovali ve skole trval snad 18 taktu, ale byla to nejaka divna varianta.

    stativ avatar 21.6.2010 13:04 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Tak tak, většině procesorů násobení trvá docela dlouho, extrém je x86, kde to trvá klidně 80 taktů. Co jsem ve škole pracovali s nějakým Hitachi tak tam to trvalo asi 20 taktů. Rozhodně by se ale to násobení dalo napsat efektivněji pomocí bitových posunů (např. jeden registr posunout o 4 bity doleva, jeden o 1 bit a sečíst.).
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    21.6.2010 13:36 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Rozhodně by se ale to násobení dalo napsat efektivněji pomocí bitových posunů (např. jeden registr posunout o 4 bity doleva, jeden o 1 bit a sečíst.)
    Pokud dobře počítám, tak tohle by násobilo 18. A bitový posun trvá stejně dlouho jako add, takže výsledek by byl stejný s tím, co vyrobí překladač.

    Quando omni flunkus moritati
    stativ avatar 21.6.2010 14:12 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Pokud dobře počítám, tak tohle by násobilo 18.
    Máš pravdu, nějak jsem se nedopočítal.

    A bitový posun trvá stejně dlouho jako add, takže výsledek by byl stejný s tím, co vyrobí překladač.
    Určitě? Tohle jsou 3 instrukce + mov, kdežto v tom ukázkovém kódu jich vidím 5 + mov.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    21.6.2010 14:16 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Určitě? Tohle jsou 3 instrukce + mov
    AVR umí posun jenom o jednu pozici.
    Quando omni flunkus moritati
    stativ avatar 21.6.2010 15:08 stativ | skóre: 54 | blog: SlaNé roury
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Aha, to jsem nevěděl.
    Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
    21.6.2010 13:30 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    18 taktů? Jsi si jistý, že to bylo AVR (ne AVR32)? Nejdelší instrukce, které má AVR, trvají 4 tiky (volání a návrat z podprogramů, návrat z přerušení); mul má určitě 2.
    Quando omni flunkus moritati
    Josef Kufner avatar 21.6.2010 13:42 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    A nemohlo to být třeba kvůli tomu, že těsně předtím tam bylo ještě jiné násobení a pipeline by musela čekat než se uvolní násobička?
    Hello world ! Segmentation fault (core dumped)
    21.6.2010 13:49 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    AVR ;-)
    Quando omni flunkus moritati
    Josef Kufner avatar 21.6.2010 13:57 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Neíkej, že by tak krásný procesor neměl pipeline...
    Hello world ! Segmentation fault (core dumped)
    21.6.2010 13:59 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Nemá, v tomhle smyslu dělá akorát to, že při zpracovávání jedné instrukce přednačítá další z programové paměti.
    Quando omni flunkus moritati
    Josef Kufner avatar 21.6.2010 14:34 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Aha, tak to pak jo.
    Hello world ! Segmentation fault (core dumped)
    21.6.2010 21:35 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Tak jenom pro úplnost (koukl jsem se do poznámek): ten kód nahoře se ve skutečnosti počítá v 16 bitech, takže těch instrukcí pro sčítání je 12 , kdežto kód s násobičkou se v podstatě nemění

    Další pěkné případy dělají tohle

    C kód:
    unsigned char *j;
    unsigned char a;
    
    j = sdev->out_hlavicka; /* out_hlavicka je char[3] */
    for (a = 3; a; a--) 
        *(j++) = b;
    Očekával bych kód
    adiw r26, 0x15 ; indexovací registr ukazující na začátek struct sdev
                   ; se posune na prvek out_hlavicka
    st X+, r18     ; hodnota v r18 se zkopíruje do tří po sobě 
    st X+, r18     ; jdoucích pozic
    st X+, r18
    Ve skutečnosti ovšem překladač vyplodí toto:
    adiw r26, 0x15 ; posun indexovacího registru
    st X, r18
    sbiw r26, 0x15 ; návrat na začátek struktury
    adiw r26, 0x16 ; abychom se hned vrátili zpátky o byte dál
    st X, r18
    sbiw r26, 0x16
    adiw r26, 0x17
    st X, r18
    adiw i sbiw jsou dvoutikové, takže osm tiků zbytečně navíc

    No a nejhezčí na konec - kód, který kopíruje jeden buffer v paměti jinam:
    movw r30, r10 ; r10:r11 obsahuje adresu bufferu, ze kterého se kopíruje,
                  ; nahraje se do r30:r31
    ld r24, Z+    ; Z je r30:r31, inkrementuje se
    movw r10, r30 ; nové Z se uloží zpět do r10:r11
    movw r30, r12 ; totéž pro cílovou adresu uloženou v r12:r13
    st Z+, r24    ; kam se hodnota v r24 uloží
    movw r12, r30 ; a nový ukazatel se vrátí do r12:r13
    subi r16, 0x01 ; dekrementace počítadla a skok, pokud
    sbci r17, 0x00 ; není nulové
    brne .-22
    Správný postup je tohle:
       mov ZL, r10 ; jeden ukazatel do Z
       mov XL, r12 ; druhý ukazatel do X
    1: ld r24, Z+
       st X+, r24
       subi r16, 0x01
       sbci r17, 0x00
       brne 1b
    movw je taky dvoutiková, takže překladač každý průchod cyklem prodlužuje o osm tiků a zdvojnásobuje tak dobu, za jakou se cyklus vykoná.

    Zkrátka a dobře překladači se tady nedá věřit, přičemž o verzi 4 gcc to platí víc než o verzi 3.
    Quando omni flunkus moritati
    21.6.2010 12:56 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Nepocita se v tech alogritmech z algebry s pretecenim bezznamenkovych cisel?
    21.6.2010 14:07 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Presne tak, znamenkove preteceni neni garantovane (preteceni vede k nedefinovanemu stavu), neznamenkove ano.

    Holt to chce proste znat standard.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Grunt avatar 21.6.2010 13:55 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Nechápu. Na tom by mělo být něco divného?
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    21.6.2010 14:10 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Ono je ted strasne moderni delat ze sebe blbce pres blog. Ja kdyz jsem narazil na podobnou vec, kterou jsem neznal tak jsem se s tim maximalne pobavil se zkusenejsim kamaradem, ktery mi rekl ze jsem kreten a ze si mam precist standard.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Grunt avatar 21.6.2010 14:18 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Nač standard? Bohatě stačí i manuálová stránka.

    -fstrict-overflow

    Allow the compiler to assume strict signed overflow rules, depending on the language being compiled. For C (and C++) this means that overflow when doing arithmetic with signed numbers is undefined, which means that the compiler may assume that it will not happen. This permits various optimizations. For example, the compiler will assume that an expression like "i + 10 > i" will always be true for signed "i". This assumption is only valid if signed overflow is undefined, as the expression is false if "i + 10" overflows when using twos complement arithmetic. When this option is in effect any attempt to determine whether an operation on signed numbers will overflow must be written carefully to not actually involve overflow.

    This option also allows the compiler to assume strict pointer semantics: given a pointer to an object, if adding an offset to that pointer does not produce a pointer to the same object, the addition is undefined. This permits the compiler to conclude that "p + u > p" is always true for a pointer "p" and unsigned integer "u". This assumption is only valid because pointer wraparound is undefined, as the expression is false if "p + u" overflows using twos complement arithmetic.

    See also the -fwrapv option. Using -fwrapv means that integer signed overflow is fully defined: it wraps. When -fwrapv is used, there is no difference between -fstrict-overflow and -fno-strict-overflow for integers. With -fwrapv certain types of overflow are permitted. For example, if the compiler gets an overflow when doing arithmetic on constants, the overflowed value can still be used with -fwrapv, but not otherwise.

    The -fstrict-overflow option is enabled at levels -O2, -O3, -Os.

    Jestli je to i ve standardu, tak jen o to víc.
    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    22.6.2010 05:26 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    A právě o manuálové stránce jsem se v zápisu zmínil. Je na tom něco špatně?

    21.6.2010 15:36 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Ono je ted strasne moderni delat ze sebe blbce pres blog.
    takze ten kdo nezna specifikaci do detailu je blbec. jinak clanek jako upozorneni na (neobvyklou) chybu, kterou muze udelat kazdy, je imho dobry napad.
    Ja kdyz jsem narazil na podobnou vec, kterou jsem neznal tak jsem se s tim maximalne pobavil se zkusenejsim kamaradem, ktery mi rekl ze jsem kreten a ze si mam precist standard.
    mas zvlastni kamarady.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    21.6.2010 16:01 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Kdyby kolega napsal, ze to byla jeho chyba zpusobena neznalosti standardu, tak je to v poradku. Bohuzel on ten incident podava tak, ze za to muzou kompilatory a jejich optimalizace.
    Marek Bernát avatar 21.6.2010 16:29 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Ťažko to mohol napísať, ak o tom nevedel. Za druhé, treba si z blogu zobrať podstatu a nebazírovať na názoroch autora, tie nie sú až tak dôležité a môžu sa deň odo dňa zmeniť (v princípe). Navyše tu vznikla celkom zaujímavá diskusia o nejakom procesore, ktorý som dodnes nepoznal. Takže blog má u mňa palec hore.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    21.6.2010 16:52 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    V tomto vlakne se bavime o tom, dela-li ze sebe kolega Andrej blbce, takze je nutne "bazirovat" na nazorech autora. Kdyby blog upozornoval na to, ze znamenkove preteceni je nedefinovane chovani, tak by to bylo v poradku. Jenze on ten text vyzniva tak, ze je to sice trochu prasarnicka, ale jinak je kod v poradku a chyba je v optimalizujicich kompilatorech.

    Marek Bernát avatar 21.6.2010 17:03 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Ešte raz: ak o tom nevedel, ťažko to mohol písať tak, ako to chcete. Písal to tak, ako si myslel, že to je. Súhlasím, že si mal o tom niečo viac zistiť, kým napísal blog. Ale určite by som ho kvôli tomu neoznačoval za blbca.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    21.6.2010 19:18 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Osobne si myslim ze mezi vyrazy "XY ze sebe dela blbce" a "XY je blbec" je vyrazny semanticky rozdil. Navic tohle je tak desne proflaknuta vec (google rad poradi).
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    Marek Bernát avatar 21.6.2010 22:05 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Mno neviem, pre mňa sú tie výrazy skoro ekvivalentné. Ničmenej, ak ti dobre rozumiem, tak pre teba výraz "dělat ze sebe blbce" je práve to, čo spravil Andrej (tj. drobná chyba z neznalosti). To potom ok, s tým nemám problém.

    Že je to prefláknuté je irelevantné. Buď o tom vieš, alebo nie :-)

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    22.6.2010 06:01 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Abych řekl pravdu, křiklouny typu „přečti si standard a nepruď“ jsem více méně čekal. Přesto si dovolím doplnit několik poznámek:

    1. Kolik uživatelů kompilátoru C má prostudovaný standard? Kdyby ho znali všichni, nemusel bych o tomto psát, že ano.
    2. K tomuto příspěvku a k některým příspěvkům níže bych asi přidal řečnickou otázku: Kde tvrdím, že ten kód je v pořádku? V mém blogpostu to nevidím.
    3. I kdyby byl tentýž kód založený na bezznaménkovém přetečení, které se přeloží správně, stále bych ho neoznačil (z hlediska čitelnosti) za „v pořádku“.
    4. Kód nevznikl tak, že bych něco takového sám od sebe vytvořil a pak se divil. :-D Zkoušel jsem cca třicet různých cyklů (ne vždy v souladu se standardem) a zajímalo mě, jak si GCC poradí například
      • s alokací registrů a s paměťovými referencemi na proměnné (lokální, globální, globální static, členy struktur, volatile, ...).
      • s optimalizací přístupu k proměnným a s přeuspořádáním instrukcí přes volání funkcí (lokálních, dobře známých (putchar()) či neznámých (z dynamických knihoven)).
      Některé výsledky mě překvapily, jiné jsem očekával. Každopádně se vsadím, že mnozí z těch, kteří tu předvádějí bohatýrské řeči ve stylu „jo, hochu, kdybys tak znal standard...“, by asi taktéž ve spoustě situací neměli příliš jasno.
    5. Cílem blogpostu je upozornit na jednu z rizikových situací, kdy kompilace dopadne při -O0 a -O1 jinak než při -O2 a -O3. Není to chyba kompilátoru (nestandardní kód -> nedefinovaný výsledek), ale zas tak samozřejmé mi to nepřipadá.
    6. Že je celá situace popsaná v manuálové stránce, to můj blogpost říká zcela výslovně. Nevím, proč si někdo myslí, že tuto záležitost považuji za bug v kompilátoru nebo co.

    A vůbec, chce to klid. Nebo rovnou -Wstrict-overflow.

    22.6.2010 09:10 R
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    -Wstrict-overflow nefunguje (GCC 4.4.4)
    22.6.2010 10:14 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Nefunguje? Co tím chtěl básník říci?

    $ gcc -O3 -Wstrict-overflow -march=native -S -o overflow.s overflow.c
    overflow.c: In function ‘main’:
    overflow.c:5:8: warning: assuming signed overflow does not occur when simplifying conditional to constant

    Třeba je to verzí GCC, co já vím...

    $ gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/lto-wrapper
    Target: x86_64-unknown-linux-gnu
    Configured with: ../configure --prefix=/usr --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-gnu-unique-object --enable-lto --enable-plugin --disable-multilib --disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
    Thread model: posix
    gcc version 4.5.0 20100520 (prerelease) (GCC)
    23.6.2010 14:24 R
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    $ gcc -O3 -Wstrict-overflow -march=native -S -o overflow.s overflow.c
    $
    $ gcc -v
    Reading specs from /usr/lib/gcc/i486-slackware-linux/4.4.4/specs
    Target: i486-slackware-linux
    Configured with: ../gcc-4.4.4/configure --prefix=/usr --libdir=/usr/lib --enable-shared --enable-bootstrap --enable-languages=ada,c,c++,fortran,java,objc --enable-threads=posix --enable-checking=release --with-system-zlib --with-python-dir=/lib/python2.6/site-packages --disable-libunwind-exceptions --enable-__cxa_atexit --enable-libssp --with-gnu-ld --verbose --with-arch=i486 --target=i486-slackware-linux --build=i486-slackware-linux --host=i486-slackware-linux
    Thread model: posix
    gcc version 4.4.4 (GCC)
    24.6.2010 04:22 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    Tak buď ve starší verzi příslušné varování chybí, nebo starší verze tu optimalizaci nepoužila a nebylo tedy před čím varovat.

    24.6.2010 12:37 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    RTFM: "This option is only active when -fstrict-overflow is active"
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    24.6.2010 15:59 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    RTFM: "The -fstrict-overflow option is enabled at levels -O2, -O3, -Os."

    22.6.2010 10:11 Martin Doucha | skóre: 23 | blog: Yet another blog
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Že je celá situace popsaná v manuálové stránce, to můj blogpost říká zcela výslovně. Nevím, proč si někdo myslí, že tuto záležitost považuji za bug v kompilátoru nebo co.
    Protože tak vyznívá název článku a ten více méně definuje kontext pro celý zbytek textu, například hranici mezi sarkasmem a vážně myšleným textem.
    Marek Bernát avatar 21.6.2010 16:29 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    +1, chcel som napísať niečo v podobnom duchu.

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    hajma avatar 21.6.2010 14:22 hajma | skóre: 27 | blog: hajma | Říčany
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Sun Studio to zkompiluje korektne
    21 promarněných znaků
    24.6.2010 12:38 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Vsechny kompilatory (i to co to nezkompiluji) to kompiluji korektne. Protoze korektne v tomto pripade = libovolne.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    21.6.2010 18:51 JS
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré
    Mozna se pletu, ale u -O3 je napsano, ze zapina optimalizace, ktere mohou za jistych okolnosti menit semantiku kodu. To si staci pamatovat a je to v pohode.
    22.6.2010 06:08 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Kompilátory jsou příliš chytré

    V tomto konkrétním případě to pro -O2 dopadne stejně, takže tentokrát problém není v -O3. Problém je v tom, že ten kód není korektní (jak už se někteří místní experti nechali slyšet) :-D a výsledek tedy není jasně definovaný.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.