X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavutil%2Fattributes.h;h=ef990a1d4f45c3453c4c3d44cf3547a667c43469;hb=17aa02b9a112398f8d9f74dcb3db55c31e91c8fe;hp=0580c9846894b23763562ba36caae2fba8f80388;hpb=2791730dbf99f3bbade1eb9eabb49424ce75c0c5;p=ffmpeg diff --git a/libavutil/attributes.h b/libavutil/attributes.h index 0580c984689..ef990a1d4f4 100644 --- a/libavutil/attributes.h +++ b/libavutil/attributes.h @@ -1,25 +1,25 @@ /* * copyright (c) 2006 Michael Niedermayer * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ /** - * @file libavutil/attributes.h + * @file * Macro definitions for various function/variable attributes */ @@ -65,7 +65,7 @@ #endif #ifndef av_cold -#if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,3) +#if AV_GCC_VERSION_AT_LEAST(4,3) # define av_cold __attribute__((cold)) #else # define av_cold @@ -73,7 +73,7 @@ #endif #ifndef av_flatten -#if (!defined(__ICC) || __ICC > 1110) && AV_GCC_VERSION_AT_LEAST(4,1) +#if AV_GCC_VERSION_AT_LEAST(4,1) # define av_flatten __attribute__((flatten)) #else # define av_flatten @@ -96,6 +96,27 @@ #endif #endif +/** + * Mark a variable as used and prevent the compiler from optimizing it + * away. This is useful for variables accessed only from inline + * assembler without the compiler being aware. + */ +#ifndef av_used +#if AV_GCC_VERSION_AT_LEAST(3,1) +# define av_used __attribute__((used)) +#else +# define av_used +#endif +#endif + +#ifndef av_alias +#if AV_GCC_VERSION_AT_LEAST(3,3) +# define av_alias __attribute__((may_alias)) +#else +# define av_alias +#endif +#endif + #ifndef av_uninit #if defined(__GNUC__) && !defined(__ICC) # define av_uninit(x) x=x @@ -104,4 +125,12 @@ #endif #endif +#ifdef __GNUC__ +# define av_builtin_constant_p __builtin_constant_p +# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) +#else +# define av_builtin_constant_p(x) 0 +# define av_printf_format(fmtpos, attrpos) +#endif + #endif /* AVUTIL_ATTRIBUTES_H */