On Sun, Jun 27, 2010 at 05:46:28PM +0300, Nikos Chantziaras wrote:
> On 06/27/2010 03:23 PM, Harald van Dijk wrote:
> > The compiler is not totally free to ignore the register keyword.
> > Both the C and the C++ standards require that the compiler complain
> > when taking the address of a register variable. Other compilers will
> > issue a hard error for it. Fixing the code to not declare the
> > variable as register would be the correct thing to do.
>
> No, it would not be the correct thing to do, because of the following.
> (This is part of a discussion between me and someone quite smarter than
> me, who explained the issue in detail.)
>
> [snip]
That explanation seems to be written by someone who does not know that
taking the address of a register variable is simply not allowed.
> OK, long read, but the the conclusion is that "fixing the code to not
> declare the variable as register would be the correct thing to do" it
> *not* the correct thing to do. The correct thing to do is to ignore the
> warning, which is not possible if warnings are turned into errors.
And which is not possible if the warning is a hard error in the first place.
> You also mentioned that "other compilers will issue a hard error for
> it." That sounds rather strange, and I wonder which compilers that
> might be; someone should file a bug report against them ;)
Well, let's start with gcc; that's quite an important one for Gentoo...
|