[FFmpeg-devel] [PATCH 01/21] avutil/avassert: Add av_unreachable and av_assume() macros
Ramiro Polla
ramiro.polla at gmail.com
Fri May 16 17:52:05 EEST 2025
On 5/16/25 16:06, Andreas Rheinhardt wrote:
> Andreas Rheinhardt:
>> Patches attached.
>>
>> - Andreas
>>
>
> Will apply this patchset tomorrow unless there are objections.
[PATCH 01/21] avutil/avassert: Add av_unreachable and av_assume() macros
> diff --git a/libavutil/avassert.h b/libavutil/avassert.h
> index 1895fb7551..d0d5aa0c7e 100644
> --- a/libavutil/avassert.h
> +++ b/libavutil/avassert.h
> @@ -75,4 +76,45 @@
> */
> void av_assert0_fpu(void);
>
> +/**
> + * Asserts that are used as compiler optimization hints depending
> + * upon ASSERT_LEVEL and NBDEBUG.
> + *
> + * Undefined behaviour occurs if execution reaches a point marked
> + * with av_unreachable() or if a condition used with av_assume()
> + * is false.
> + *
> + * The condition used with av_assume() should not have side-effects
> + * and should be visible to the compiler.
> + */
> +#if defined(ASSERT_LEVEL) ? ASSERT_LEVEL > 0 : !defined(HAVE_AV_CONFIG_H) && !defined(NDEBUG)
> +#define av_unreachable(msg) \
> +do { \
> + av_log(NULL, AV_LOG_PANIC, \
> + "Code at %s:%d that was supposedly unreachable due to '%s' reached\n", \
> + __FILE__, __LINE__, msg); \
The message sounds weird (especially that dangling "reached" at the
end). What about:
"Reached supposedly unreachable code at %s:%d: %s\n"
or any other variation where the reason message gets printed at the end.
More information about the ffmpeg-devel
mailing list