[FFmpeg-devel] [PATCH] Fix missing used attribute for inline assembly variables

Michael Niedermayer michael at niedermayer.cc
Tue Oct 31 17:38:09 EET 2017


On Tue, Oct 31, 2017 at 12:16:18PM +0000, Thomas Köppe wrote:
> Variables used in inline assembly need to be marked with attribute((used)).

This should not be the case.
Variables referenced through in/out operands should not need that.
Only ones accessed directly bypassing operands should need this


> Static constants already were, via the define of DECLARE_ASM_CONST.
> But DECLARE_ALIGNED does not add this attribute, and some of the variables
> defined with it are const only used in inline assembly, and therefore
> appeared dead.
> ---
>  libavcodec/cabac.c | 2 +-
>  libavutil/mem.h    | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c
> index dd2b057c6d..7321b48901 100644
> --- a/libavcodec/cabac.c
> +++ b/libavcodec/cabac.c
> @@ -32,7 +32,7 @@
>  #include "cabac.h"
>  #include "cabac_functions.h"
>  
> -const uint8_t ff_h264_cabac_tables[512 + 4*2*64 + 4*64 + 63] = {
> +DECLARE_ALIGNED(1, const uint8_t, ff_h264_cabac_tables)[512 + 4*2*64 + 4*64 + 63] = {
>      9,8,7,7,6,6,6,6,5,5,5,5,5,5,5,5,
>      4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
>      3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
> diff --git a/libavutil/mem.h b/libavutil/mem.h
> index 527cd03191..c4ee11af58 100644
> --- a/libavutil/mem.h
> +++ b/libavutil/mem.h
> @@ -101,7 +101,7 @@
>      #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (FFMIN(n, 16)))) v
>      #define DECLARE_ASM_CONST(n,t,v)    static const t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v
>  #elif defined(__GNUC__) || defined(__clang__)
> -    #define DECLARE_ALIGNED(n,t,v)      t __attribute__ ((aligned (n))) v
> +    #define DECLARE_ALIGNED(n,t,v)      t av_used __attribute__ ((aligned (n))) v

which variables actually are affected/ need this ?

Marking all aligned variables as used makes it harder to spot unused
variables leading to accumulation of cruft


[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The misfortune of the wise is better than the prosperity of the fool.
-- Epicurus
-------------- 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/20171031/b5bfe712/attachment.sig>


More information about the ffmpeg-devel mailing list