[Developers] g++ warning: operation on *bla* may be undefined
Erik Schnetter
schnetter at cct.lsu.edu
Thu Oct 26 10:49:57 CDT 2006
If I remember correctly, gcc suppresses warnings about var being
unused when you add the no-op expression
int x = sizeof(var);
to the source code. Other compilers suppress warnings when you add
the no-op expression
int * y = & var + 1;
to the source code. If you want to suppress warnings for all
compilers, combine both approaches:
int x = sizeof(var);
int * y = & var + 1;
Thus, both compilers will see that var is used in some way.
-erik
On Oct 26, 2006, at 17:40:23, Steve White wrote:
> No comprendo.
>
> On 26.10.06, Erik Schnetter wrote:
>> Idea: Try
>>
>> sizeof var + whatever-term-works-for-the-other-compilers,
>>
>> this way each compiler sees the variable used.
>>
>> -erik
>>
>> On Oct 26, 2006, at 17:09:40, Steve White wrote:
>>
>>> Well, the mechanism I put in works for gcc...
>>> It seems the pgCC doesn't consider sizeof( var ) to be a "use" of
>>> var.
>>> I'm looking at an alternative.
>>>
>>> On 26.10.06, 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
>>>>
>>>>
>>>> --
>>>> 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.
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>>> _______________________________________________
>>>> Developers mailing list
>>>> Developers at cactuscode.org
>>>> http://www.cactuscode.org/mailman/listinfo/developers
>>>
>>>
>>> --
>>> 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.
>>
>>
>>
>
>
>
>> _______________________________________________
>> Developers mailing list
>> Developers at cactuscode.org
>> http://www.cactuscode.org/mailman/listinfo/developers
>
>
> --
> 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/ee8db274/attachment.bin
More information about the Developers
mailing list