[rtems commit] semopen.c: Address set but unused variable warning

Gedare Bloom gedare at rtems.org
Mon Sep 23 13:32:00 UTC 2013


You can't always win.

On Mon, Sep 23, 2013 at 9:15 AM, Joel Sherrill
<Joel.Sherrill at oarcorp.com> wrote:
> You get a statement with no effect warning.
>
> Joel Sherrill <Joel.Sherrill at oarcorp.com> wrote:
>
>
> Does that work or generate an warning about statement with no effect?
>
> Gedare Bloom <gedare at rtems.org> wrote:
>
>
> On Sun, Sep 22, 2013 at 10:45 AM, Joel Sherrill
> <joel.sherrill at oarcorp.com> wrote:
>> There is precedence for using the compiler attributes
>> so I just added that and switched.
>>
> I think it might be better to avoid compiler attributes when there is
> a language-level alternative that is compiler-agnostic. In this case,
> the use of:
> (void) var;
> seems fine to me.
>
>> Thanks for the feedback.
>>
>> If we have a print format string to use for mode_t and
>> wchar_t, a few more cases would be fixed.
>>
>> On 9/22/2013 7:32 AM, Pavel Pisa wrote:
>>> Hello Ralf and others,
>>>
>>> On Sunday 22 of September 2013 05:01:49 Ralf Corsepius wrote:
>>>>> diff --git a/cpukit/posix/src/semopen.c b/cpukit/posix/src/semopen.c
>>>>> index b863080..e61fad0 100644
>>>>> --- a/cpukit/posix/src/semopen.c
>>>>> +++ b/cpukit/posix/src/semopen.c
>>>>> @@ -43,6 +43,14 @@
>>>>>    *        parameters must be present.
>>>>>    */
>>>>>
>>>>> +/*
>>>>> + * mode is set but never used. GCC gives a warning for this
>>>>> + * and we need to tell GCC not to complain. But we have to
>>>>> + * have it because we have to work through the variable
>>>>> + * arguments to get to attr.
>>>>> + */
>>>>> +#pragma GCC diagnostic push
>>>>> +#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
>>>>>   sem_t *sem_open(
>>>>>     const char *name,
>>>>>     int         oflag,
>>>>> @@ -137,3 +145,4 @@ return_id:
>>>>>       return (sem_t *)&the_semaphore->Object.id;
>>>>>     #endif
>>>>>   }
>>>>> +#pragma GCC diagnostic pop
>>>>
>>>> Why this brutal and probably non-portable way to suppress warnings?
>>>>
>>>> Why doesn't __attribute__((unused)) or similar suffice?
>>>
>>> I would prefer to see something like RTEMS_ATTR_UNUSED to support
>>> multiple compilers. You can look at my collection of these in
>>> uLUt definitions file
>>>
>>> http://sourceforge.net/p/ulan/ulut/ci/master/tree/ulut/ul_utdefs.h
>>>
>>> I declare file contents (by this e-mail) as free for public
>>> domain use (uLUt as whole is is GPL/LGPL/MPL RTEMS compatible too).
>>>
>>> As for the actual __attribute__((unused)) there is even portable
>>> solution which does not depend on GCC extension.
>>>
>>> {
>>>   int my_unused_var;
>>>   (void) my_unused_var;
>>> }
>>>
>>> This solution should be accepted by all compilers and is suggested
>>> by some people as better option.
>>>
>>> Best wishes,
>>>
>>>              Pavel
>>> _______________________________________________
>>> rtems-devel mailing list
>>> rtems-devel at rtems.org
>>> http://www.rtems.org/mailman/listinfo/rtems-devel
>>>
>>
>>
>>
>> --
>> Joel Sherrill, Ph.D.             Director of Research & Development
>> joel.sherrill at OARcorp.com        On-Line Applications Research
>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>> Support Available                (256) 722-9985
>> _______________________________________________
>> rtems-devel mailing list
>> rtems-devel at rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-devel
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel



More information about the devel mailing list