[FFmpeg-devel] [PATCHv2] avformat/movenc: suppress -Wstrict-overflow warnings

Hendrik Leppkes h.leppkes at gmail.com
Fri Oct 16 23:45:32 CEST 2015


On Fri, Oct 16, 2015 at 11:39 PM, Ganesh Ajjanagadde
<gajjanagadde at gmail.com> wrote:
> On Wed, Oct 14, 2015 at 10:05 PM, Ganesh Ajjanagadde
> <gajjanagadde at gmail.com> wrote:
>> This patch results in identical behavior of movenc, and suppresses -Wstrict-overflow
>> warnings observed in GCC 5.2:
>> http://fate.ffmpeg.org/log.cgi?time=20150926231053&log=compile&slot=x86_64-archlinux-gcc-threads-misc,
>> "warning: assuming signed overflow does not occur when assuming that (X - c) > X is always false [-Wstrict-overflow]"
>> I have manually checked that all usages are safe, and overflow possibility does
>> not exist with this expression rewrite.
>>
>> Some expressed concern over readability loss, hence a comment is added.
>> This is the simplest way to suppress this warning.
>>
>> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde at gmail.com>
>> ---
>>  libavformat/movenc.c | 4 +++-
>>  1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/libavformat/movenc.c b/libavformat/movenc.c
>> index 5115585..ff997f2 100644
>> --- a/libavformat/movenc.c
>> +++ b/libavformat/movenc.c
>> @@ -854,7 +854,9 @@ static int get_cluster_duration(MOVTrack *track, int cluster_idx)
>>  {
>>      int64_t next_dts;
>>
>> -    if (cluster_idx >= track->entry)
>> +    /* GCC 5.2 wants to "optimize" cluster_idx >= track->entry to the below
>> +     * expression. We actually mean cluster_idx >= track->entry. */
>> +    if (cluster_idx - track->entry >= 0)
>>          return 0;
>>
>>      if (cluster_idx + 1 == track->entry)
>> --
>> 2.6.1
>>
>
> ping, is this solution acceptable? Note that I will get rid of the
> extra * on the second line of the comment.

Not a fan myself of any such hacks to get compilers to shut up. Is GCC
doing something clearly wrong here, and the false warning should be
reported?

- Hendrik


More information about the ffmpeg-devel mailing list