eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › WinAVR i bledy zalezne od optymalizacji
Ilość wypowiedzi w tym wątku: 5

  • 1. Data: 2010-05-14 12:04:02
    Temat: WinAVR i bledy zalezne od optymalizacji
    Od: Maciek <f...@i...pl>

    Czesc,

    mam taki oto fragment kodu kompilowany w WinAVR-20100110:

    //////////////////////////////////////////
    struct _TestStruct
    {
    unsigned Flag :1;
    };

    unsigned char TestByte;
    int TestInt;

    TestByte = ((struct _TestStruct *)&TestInt)->Flag;
    ///////////////////////////////////////////

    Po skompilowaniu z optymalizacja -O0, -O1 wszystko jest ok. Natomiast
    po skompilowaniu z optymalizacja -O1, -O2, -O3, -Os,
    kompilator wypisuje blad: "dereferencing type-punned pointer will
    break strict-aliasing rules".
    O co w tym chodzi?

    Pzdr,
    Maciek


  • 2. Data: 2010-05-14 12:51:18
    Temat: Re: WinAVR i bledy zalezne od optymalizacji
    Od: "Maciek" <f...@i...pl>


    Uzytkownik "Maciek" <f...@i...pl> napisal w wiadomosci
    news:c7bf7c3c-7c6b-48b6-8db1-280fec0db4ee@h39g2000yq
    n.googlegroups.com...
    > Czesc,
    >
    > mam taki oto fragment kodu kompilowany w WinAVR-20100110:
    >
    > //////////////////////////////////////////
    > struct _TestStruct
    > {
    > unsigned Flag :1;
    > };
    >
    > unsigned char TestByte;
    > int TestInt;
    >
    > TestByte = ((struct _TestStruct *)&TestInt)->Flag;
    > ///////////////////////////////////////////
    >
    > Po skompilowaniu z optymalizacja -O0, -O1 wszystko jest ok. Natomiast
    > po skompilowaniu z optymalizacja -O1, -O2, -O3, -Os,
    > kompilator wypisuje blad: "dereferencing type-punned pointer will
    > break strict-aliasing rules".

    Dodam tylko, ze gdy zmienna TestInt jest typu 'char' - blad sie nie pojawia.
    Blad dotyczy oczywiscie linii, w ktorej wartosc bitu Flag jest przepisywana
    do zmiennej TestByte.

    Maciek



  • 3. Data: 2010-05-14 14:03:25
    Temat: Re: WinAVR i bledy zalezne od optymalizacji
    Od: Arek <a...@...a.z.e.t.a.pl>

    Maciek wrote:

    > Po skompilowaniu z optymalizacja -O0, -O1 wszystko jest ok. Natomiast
    > po skompilowaniu z optymalizacja -O1, -O2, -O3, -Os,
    > kompilator wypisuje blad: "dereferencing type-punned pointer will
    > break strict-aliasing rules".
    > O co w tym chodzi?

    http://cellperformance.beyond3d.com/articles/2006/06
    /understanding-strict-
    aliasing.html

    >
    > Pzdr,
    > Maciek

    --
    Arek, arekmx|gazeta.pl


  • 4. Data: 2010-05-14 14:33:15
    Temat: Re: WinAVR i bledy zalezne od optymalizacji
    Od: cepu69 <c...@t...pl>

    Maciek wrote:

    > //////////////////////////////////////////
    > struct _TestStruct
    > {
    > unsigned Flag :1;
    > };
    >
    > unsigned char TestByte;
    > int TestInt;
    >
    > TestByte = ((struct _TestStruct *)&TestInt)->Flag;
    > ///////////////////////////////////////////
    >
    > Po skompilowaniu z optymalizacja -O0, -O1 wszystko jest ok. Natomiast
    > po skompilowaniu z optymalizacja -O1, -O2, -O3, -Os,
    > kompilator wypisuje blad: "dereferencing type-punned pointer will
    > break strict-aliasing rules".
    > O co w tym chodzi?

    http://mail.opensolaris.org/pipermail/tools-gcc/2005
    -August/000047.html


    czego? gcc -Wall -O2 -g strict_aliasing.c -o strict_aliasing
    strict_aliasing.c: In function ?main?:
    strict_aliasing.c:13: warning: dereferencing type-punned pointer will break
    strict-aliasing rules

    czego? ./strict_aliasing
    Testbyte 0, Testint 1

    czego? gcc -Wall -O1 -g strict_aliasing.c -o strict_aliasing

    czego? ./strict_aliasing
    Testbyte 1, Testint 1

    Zadanie domowe : Dowiedziec sie czym rozni sie kod wynikowy przy uzyciu
    optymalizacji -O1 a -O2?


  • 5. Data: 2010-05-24 10:43:23
    Temat: Re: WinAVR i bledy zalezne od optymalizacji
    Od: "Maciek" <f...@i...pl>


    Użytkownik "cepu69" <c...@t...pl> napisał w wiadomości
    news:hsjmvb$s02$1@inews.gazeta.pl...
    > Maciek wrote:
    >
    >> //////////////////////////////////////////
    >> struct _TestStruct
    >> {
    >> unsigned Flag :1;
    >> };
    >>
    >> unsigned char TestByte;
    >> int TestInt;
    >>
    >> TestByte = ((struct _TestStruct *)&TestInt)->Flag;
    >> ///////////////////////////////////////////
    >>
    >> Po skompilowaniu z optymalizacja -O0, -O1 wszystko jest ok. Natomiast
    >> po skompilowaniu z optymalizacja -O1, -O2, -O3, -Os,
    >> kompilator wypisuje blad: "dereferencing type-punned pointer will
    >> break strict-aliasing rules".
    >> O co w tym chodzi?
    >
    > http://mail.opensolaris.org/pipermail/tools-gcc/2005
    -August/000047.html

    Dzięki. Już wszytko jasne.

    Pzdr,
    Maciek


strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: