[Developers] g++ warning: operation on *bla* may be undefined
Erik Schnetter
schnetter at cct.lsu.edu
Thu Oct 26 09:57:25 CDT 2006
Nothing special happens. This attribute just means that this
variable is expected to be potentially unused, so that there should
be no warnings about it. As far as I know, this is meant for auto-
generated code or similar situations where variables which are left
unused are not a programmer's oversight.
There is also an __attribute__((used)), which specifies that this
variables is actually used, even if it "looks unused" in the source
code. This is useful for transforming the produced assembler code
later on.
-erik
On Oct 26, 2006, at 16:42:09, Tom Goodale wrote:
> Interesting. What happens when you do use an __attribute__
> ((unused)) variable ?
>
> Tom
>
> On Thu, 26 Oct 2006, Erik Schnetter wrote:
>
>> gcc has __attribute__((unused)) to mark variables that are
>> intentionally unused. This suppresses this warning. Other
>> compilers may have similar ways for annotating variables.
>>
>> I have implemented a bit of generic infrastructure to declare
>> variables, which makes it easier to experiment with these things.
>> I have also implemented autodetecting whether __attribute__
>> ((unused)) is supported, so that it is used when present, and an
>> old-style mechanism is used otherwise. A similar thing is done for
>> Fortran code.
>>
>> The changes are straightforward, but touch quite a number of
>> files. I would need to isolate them from other changes, and then
>> they need to be tested thoroughly. I can do the first part if you
>> are interested.
>>
>> We discussed this before, and then the consensus was that using
>> __attribute__((unused)) was not worth the effort because the
>> existing mechanisms were sufficient. Maybe this has changed with
>> gcc 4 having become too clever.
>>
>> -erik
>>
>> On Oct 26, 2006, at 15:50:38, Steve White wrote:
>>
>>> Hi again.
>>> Unfortunately, Portland Group's C++ compiler (which I hadn't tried
>>> in my tests) now warns:
>>>
>>> variable "parameter_name" was set but never used
>>> for every CCTK parameter. I don't think it was warning about the
>>> old code.
>>> It seems that one can't please everybody.
>>> On 20.10.06, Steve White wrote:
>>>> Hi,
>>>> This is concerned with g++ warnings like:
>>>>
>>>> Preprocessing arrangements/Carpet/Carpet/src/Timing.cc
>>>> Compiling arrangements/Carpet/Carpet/src/Timing.cc
>>>> configs/chain_gcc_carpet/build/Carpet/Timing.cc:
>>>> In function ‘void Carpet::InitTimingVariables(const cGH*)’:
>>>> configs/chain_gcc_carpet/build/Carpet/Timing.cc:120:
>>>> warning: operation on ‘cctki_use’ may be undefined
>>>> The culprit was in generated bindings code meant to get rid of
>>>> warnings
>>>> about unused variables corresponding to Cactus parameters
>>>> included in
>>>> code by the DECLARE_CCTK_PARAMETERS macro.
>>>> Typically, a struct was defined to hold copies of the macros, then
>>>> such very interesting constructs would appear.
>>>>
>>>> const void *PRIVATE_CACTUS_STRUCT_use = ( \
>>>> PRIVATE_CACTUS_STRUCT_use = &cctk_run_title, \
>>>> PRIVATE_CACTUS_STRUCT_use = &*PRIVATE_CACTUS_STRUCT_use \
>>>> )
>>>> This code replaces that with a do-nothing enum declaration
>>>> enum {
>>>> dummy_cctk_run_title = sizeof( cctk_run_title )
>>>> //,etc.
>>>> };
>>>> The nature of all the entities involved is here much clearer,
>>>> both to
>>>> compilers and to me.
>>>> Like the existing solution, this permits the user to proceed to
>>>> make more
>>>> declarations after the DECLARE_CCTK_PARAMETERS macro (simply
>>>> putting a list
>>>> of variable assignments after the declaration would not have
>>>> that property).
>>>> See also the patches list posting of the same name, and PR 2070
>>>> http://www.cactuscode.org/cactus_cgi-bin/gnatsweb.pl?cmd=view%
>>>> 20audit-trail&database=cactus&pr=2070
>>>> for a patch.
>>>> It has been tested on Gnu 4x, Intel 9x, IBM XL
>>>> Cheers!
>>> --
>>> Steve White : Programmer
>>> Max-Planck-Institut für Gravitationsphysik Albert-Einstein-
>>> Institut
>>> Am Mühlenberg 1, D-14476 Golm, Germany
>>> +49-331-567-7625
>>> _______________________________________________
>>> Developers mailing list
>>> Developers at cactuscode.org
>>> http://www.cactuscode.org/mailman/listinfo/developers
>>
>>
> _______________________________________________
> Developers mailing list
> Developers at cactuscode.org
> http://www.cactuscode.org/mailman/listinfo/developers
--
Erik Schnetter <schnetter at cct.lsu.edu>
My email is as private as my paper mail. I therefore support encrypting
and signing email messages. Get my PGP key from www.keyserver.net.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
Url : http://www.cactuscode.org/pipermail/developers/attachments/20061026/20a7ce57/attachment.bin
More information about the Developers
mailing list