При включении предупреждений компилятор GCC пробует обнаружить в коде разные возможные проблемы. В том числе и наличие вычислений, результаты которых не используются. Иногда это приводит к смешным предупреждениям, если представить их в контексте такого языка как Haskell :)
Возьмём такую программу на C:
$ cat > tmp.c << EOF
> struct S {
> int x;
> int y;
> };
>
> int f(int x) {
> struct S s = {x, 42};
> s.y;
> return x;
> }
> EOF
Обратите внимание на инструкцию s.y;
.
Теперь попробуем скомпилировать её при помощи GCC с включёнными предупреждениями:
$ gcc -c -std=c99 -Wall -Wextra -pedantic tmp.c
tmp.c: In function 'f':
tmp.c:8:5: warning: statement with no effect