[FFmpeg-devel] [PATCH] all: silence clang -Wabsolute-value for unsigned subtractions
Michael Niedermayer
michael at niedermayer.cc
Mon Aug 24 00:58:20 CEST 2015
On Sat, Aug 22, 2015 at 04:26:53PM +0200, Nicolas George wrote:
> Le quintidi 5 fructidor, an CCXXIII, Ganesh Ajjanagadde a écrit :
> > + /* cast for -Wabsolute-value in clang 3.5+ */
> > + return abs((int) (t1 - t2)) + abs((int) ((c1 & 0x000000ff) - (c2 & 0x000000ff))) +
> > + abs((int) (((c1 & 0x0000ff00) >> 8) - ((c2 & 0x0000ff00) >> 8))) +
> > + abs((int) (((c1 & 0x00ff0000) >> 16) - ((c2 & 0x00ff0000) >> 16)));
>
> I believe this is not correct, with or without the cast (the cast is
> implicit due to the prototype of abs(), of course): if the result is morally
> negative, converting the morally-negative unsigned to signed is an undefined
> behaviour.
i dont know what "morally negative" means exactly but convertion
of out of range values to signed integers is not undefined behavior
in C. It is implementation defined or raises a implementation defined
signal
Please see 6.3.1.3 Signed and unsigned integers in ISO/IEC 9899:TC3
I doubt that FFmpeg will work on platforms that
define this significantly differently than how it is defined for the
currently supported platforms,
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
The real ebay dictionary, page 3
"Rare item" - "Common item with rare defect or maybe just a lie"
"Professional" - "'Toy' made in china, not functional except as doorstop"
"Experts will know" - "The seller hopes you are not an expert"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20150824/9d2e1bee/attachment.sig>
More information about the ffmpeg-devel
mailing list