[th/gcc4] apps fixing guide #2 - aliasing violations.

Paweł Sikora pluto w agmk.net
Sob, 6 Maj 2006, 09:13:01 CEST


On Saturday 06 May 2006 03:04, Tomasz Narloch wrote:
> Grzegorz Konopko wrote:

> Nie orienruje sie w optymalizowaniu kodu z -O2 itp, ale
> dla ciekawosci przetestowalem ten programik i u mnie (athlon) zauwazylem
> ciekawe wyniki:
> jesli funkcje f napiszemy tak (dodamy printf() ):
> /***********************************************************************/
> short f(short *sptr, long *lptr)
> {
>         short x = *sptr;
>         //printf("wersja(4711): %p\n", &x);
>         //printf("wersja(9422): %p\n", sptr);
>
>         *lptr = 0;
>         //printf("wersja(0):  %p\n", sptr);
>         return *sptr + x;
> }
> /**********************************************************************/
> to wzaleznosci jaki komentarz printf-a odkomentuje to po kompilacji z
> -O2 program zwraca inny wynik:)
> To dopiero jest sztuczka:))))))

to nie jest żadna sztuczka tylko przypadek. przy złamaniu zasad aliasing-u
program może działać jak mu się podoba włącznie z SEGV :)


Więcej informacji o liście dyskusyjnej pld-devel-pl