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

Thomas Köppe tkoeppe at google.com
Tue Oct 31 17:52:14 EET 2017

+Teresa, who drafted the patch initially.

On 31 October 2017 at 15:38, Michael Niedermayer <michael at niedermayer.cc>

> 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

I've added Teresa to the thread, who initially analyzed the problem. (For
background on ThinLTO, see here cppcon talk:

> > -    #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 ?

Without this annotation, and when compiling and linking with ThinLTO, I get
an undefined reference to "ff_h264_cabac_tables", and also to
"ff_pw_96", "ff_pw_53",
"ff_pw_42", "ff_w1111" and many more.

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

I see. Maybe we can annotate only the affected variables more granularly?

More information about the ffmpeg-devel mailing list