変数定義時の自己代入が通る。

前にも悩んだ気がするcで変数定義時に自分で自分を初期化でき、かつ警告もでないというものに、また悩んでしまいました。どんなものかというと、

int main(void)
{
    int a = a;

    return 0;
}

というようなものです。当然不定値が入っている分けですが、gcc4.3に-O3 -Wallをつけても警告してくれません。cxxにすると同じコードでも警告してくれるのでc限定みたいですが、なにか理由があって警告出さないのでしょうか?