abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:33 | Nová verze

    Nová čísla časopisů od nakladatelství Raspberry Pi: MagPi 141 (pdf) a HackSpace 78 (pdf).

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Nová verze

    Byla vydána verze 2.0.0 programovacího jazyka Kotlin (Wikipedie, GitHub). Oficiálně bude představena ve čtvrtek na konferenci KotlinConf 2024 v Kodani. Livestream bude možné sledovat na YouTube.

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

    Byla vydána nová major verze 27.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 01:11 | Nová verze

    Byla vydána nová verze 1.8.0 svobodného multiplatformního softwaru pro konverzi video formátů HandBrake (Wikipedie). Přehled novinek v poznámkách k vydání na GitHubu. Instalovat lze také z Flathubu.

    Ladislav Hagara | Komentářů: 0
    20.5. 21:55 | IT novinky

    Microsoft představil nové označení počítačů Copilot+. Dle oznámení se jedná se o počítače poskytující funkce umělé inteligence. Vedle CPU a GPU mají také NPU (Neural Processing Unit). Uvnitř představených Copilot+ notebooků běží ARM čipy Qualcomm Snapdragon X Elite nebo X Plus.

    Ladislav Hagara | Komentářů: 2
    20.5. 17:55 | Zajímavý článek

    Příspěvek na blogu Codean Labs rozebírá zranitelnost CVE-2024-4367 v PDF.js, tj. mj. prohlížeči PDF souborů ve Firefoxu. Při otevření útočníkem připraveného pdf souboru může být spuštěn libovolný kód v JavaScriptu. Vyřešeno ve Firefoxu 126.

    Ladislav Hagara | Komentářů: 1
    20.5. 12:55 | Nová verze

    Lazygit byl vydán ve verzi 0.42.0. Jedná se o TUI (Text User Interface) nadstavbu nad gitem.

    Ladislav Hagara | Komentářů: 0
    20.5. 12:22 | IT novinky

    K open source herní konzole Picopad přibyla (𝕏) vylepšená verze Picopad Pro s větším displejem, lepšími tlačítky a větší baterii. Na YouTube lze zhlédnout přednášku Picopad - open source herní konzole z LinuxDays 2023.

    Ladislav Hagara | Komentářů: 7
    17.5. 13:44 | Nová verze

    Byla vydána (𝕏) nová major verze 17 softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech GitLab (Wikipedie). Představení nových vlastností i s náhledy a videi v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 0
    17.5. 12:22 | Komunita

    Sovereign Tech Fund, tj. program financování otevřeného softwaru německým ministerstvem hospodářství a ochrany klimatu, podpoří vývoj FFmpeg částkou 157 580 eur. V listopadu loňského roku podpořil GNOME částkou 1 milion eur.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (80%)
     (5%)
     (8%)
     (7%)
    Celkem 432 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    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.