aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhao Zhili <zhilizhao@tencent.com>2024-11-15 22:09:02 +0800
committerZhao Zhili <zhilizhao@tencent.com>2024-11-29 12:32:57 +0800
commit57861911a34e1c33796be97f2b2f44e05fffd647 (patch)
tree279274d31fa812fecb0a3ad900daaf529510b8dc
parentfe2c9746dea08236eab2c47fefd47c25693b6c9f (diff)
downloadffmpeg-57861911a34e1c33796be97f2b2f44e05fffd647.tar.gz
avutil/mem_internal: define DECLARE_ALIGNED as C11's alignas
alignas is portable than compiler's specific __attribute__. It do have a limitation, that alignas don't support specify aligment on the declarations of struct (it works for specify alignment on struct fields), which only used by avcodec/cavs, and is removed now. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
-rw-r--r--libavutil/mem_internal.h27
1 files changed, 8 insertions, 19 deletions
diff --git a/libavutil/mem_internal.h b/libavutil/mem_internal.h
index 20f9b3e3f2..49262abf4b 100644
--- a/libavutil/mem_internal.h
+++ b/libavutil/mem_internal.h
@@ -24,6 +24,7 @@
#include "config.h"
#include <stdint.h>
+#include <stdalign.h>
#include "attributes.h"
#include "macros.h"
@@ -73,26 +74,14 @@
* @param v Name of the variable
*/
-#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
- #define DECLARE_ALIGNED_T(n,t,v) t __attribute__ ((aligned (n))) v
- #define DECLARE_ASM_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
- #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
-#elif defined(__DJGPP__)
- #define DECLARE_ALIGNED_T(n,t,v) t __attribute__ ((aligned (FFMIN(n, 16)))) v
- #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __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_T(n,t,v) t __attribute__ ((aligned (n))) v
- #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (n))) v
- #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
-#elif defined(_MSC_VER)
- #define DECLARE_ALIGNED_T(n,t,v) __declspec(align(n)) t v
- #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t v
- #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v
+#if defined(__DJGPP__)
+ #define DECLARE_ALIGNED_T(n,t,v) alignas(FFMIN(n, 16)) t v
+ #define DECLARE_ASM_ALIGNED(n,t,v) alignas(FFMIN(n, 16)) t av_used v
+ #define DECLARE_ASM_CONST(n,t,v) alignas(FFMIN(n, 16)) static const t av_used v
#else
- #define DECLARE_ALIGNED_T(n,t,v) t v
- #define DECLARE_ASM_ALIGNED(n,t,v) t v
- #define DECLARE_ASM_CONST(n,t,v) static const t v
+ #define DECLARE_ALIGNED_T(n,t,v) alignas(n) t v
+ #define DECLARE_ASM_ALIGNED(n,t,v) alignas(n) t av_used v
+ #define DECLARE_ASM_CONST(n,t,v) alignas(n) static const t av_used v
#endif
#if HAVE_SIMD_ALIGN_64