Gentoo Archives: gentoo-dev

From: Nikos Chantziaras <realnc@×××××.de>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] Re: FYI: Rules for distro-friendly packages
Date: Sun, 27 Jun 2010 17:48:50
Message-Id: i082ss$v2j$1@dough.gmane.org
In Reply to: Re: [gentoo-dev] Re: FYI: Rules for distro-friendly packages by "Harald van Dijk"
On 06/27/2010 08:14 PM, Harald van Dijk wrote:
> 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.
It is allowed. Section 7.1.1, Paragraphs 2 and 3 of the C++ standard: The register specifier [...] specifies that the named variable has automatic storage duration (3.7.3). A variable declared without a storage-class-specifier at block scope or declared as a function parameter has automatic storage duration by default. A register specifier is a hint to the implementation that the variable so declared will be heavily used. [ Note: the hint can be ignored and in most implementations it will be ignored if the address of the variable is taken. This use is deprecated (see D.4). — end note ]
>> 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...
That code compiles just fine. I don't know of any GCC version that issues an error for this rather than just a warning.

Replies

Subject Author
[gentoo-dev] Re: FYI: Rules for distro-friendly packages dev-random@××××.ru