[Developers] g++ warning: operation on *bla* may be undefined
Erik Schnetter
schnetter at cct.lsu.edu
Thu Oct 26 09:36:15 CDT 2006
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
--
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/26427930/attachment.bin
More information about the Developers
mailing list