==============
Variables used in inline assembly need to be marked with attribute((used)).
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.
This change makes FFMPEG linkable with Clang's ThinLTO.
---
libavcodec/cabac.c | 2 +-
libavutil/mem.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
@@ -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,
@@ -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