From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 443F448D47 for ; Fri, 24 May 2024 21:58:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 317ED68D57B; Sat, 25 May 2024 00:58:50 +0300 (EEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2066.outbound.protection.outlook.com [40.92.59.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 403BD68D37F for ; Sat, 25 May 2024 00:58:44 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iWlYpNxrGrwmHb0x4zPgzKmCX2N9gPvjdx6oIK58S4p+7+arYPFpIpm5O4AuzeK5X+H3su662P2M+YqgdzVESFIUHJki9BCf3kqL8wdCgT3IfLovj44aIunCF1evXgIntUUP1rlOIzG+tY3s8bLSzQT13eeCZgYyfkTdLy+BhfoSc4HGGT28xNHGCkU4BNUrXS1xPL5sWzn/DkiLO34DlqMV7rqCWhiuvlK2pHLAxgqDuwVt1WGLjb6Mtc1C3H/meS24AwCqUwO9Q0/LqtgeITLHB/h19uYAU+onL9rqjlEwKpzS2mjp0AYz6lcqwLYFEKnR2CWLBGTVpNV4CLtAxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=RRgBELnuPXLhfDJAx+jFey24jlGPGviiD5N/2jHl4gs=; b=h+JvHVwAHYRX1xeTL9kgO+J3w/Sbt9GLEOKOGNcYshYK4/470hSY0sBldpnC2QDbqhwWcfuVqGCcMA9zcdA2JFAV1lNW+scR7Z0wV/BWNQYuzJMR/r2cqPR3bbxcAlqb8yA9mvcW9z3hwnt2lJaRDqbSXALDS2HV9tLGrLnnyn143e99Xe/2foxwVH7SOSas0fBvAmCYUBJ/YXgb0K1P78iLBYIEFS5RQh1TqT4LSofLDEdDHUKeJSocKwWPWB3a95errMEKzSf72RuqKuUuzl++ZAq1myUcesrdOJstPEK7W8sPVePQbOdrixOxV9Tetc/DxtthQanXcWh+KoZX+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=RRgBELnuPXLhfDJAx+jFey24jlGPGviiD5N/2jHl4gs=; b=R4NVBzusXmDkWtNXEk7OXJTiOyJjnZVVcCm9scyl/4cVcE4jtx26/YUt96oOuPOktNb1dR10SSjOLUtEHGd3Op8MQLriQG0CNgHsXl1cScxVjYHwS+Kjbt/j89KBzmu8tH9tA0p8LBkTTGgt4RjqRP17L1Z9PuaVjbVyNWPpHPWqZcc6oeJBvyy6MT7+Ei+uDhy/JiVFeGGKZCBdPlZFY+Yo3Gijw9x+tteke0q2E2P+XrKGNC9z2IC+Q+K9PkZiQb7yAadu8RcywnjBEsOE3Y8xIEqUEr9We6c9vGtsOg3PhsJuAhtCnbvYtHnLcBlvlu5bIdlEdx6g1PBBP3Cjwg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AM8P250MB0140.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:323::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.27; Fri, 24 May 2024 21:58:42 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%4]) with mapi id 15.20.7611.016; Fri, 24 May 2024 21:58:42 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 May 2024 23:58:21 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 X-TMN: [Eq/jcg/djSVjHBNQFVALxByZxbrCnN2XLLWM+DyZkT8=] X-ClientProxiedBy: ZRAP278CA0012.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::22) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240524215832.1276263-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AM8P250MB0140:EE_ X-MS-Office365-Filtering-Correlation-Id: 10122cb4-842d-4f84-67d7-08dc7c3cacd8 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: ecVAfLgm85V/9/GYXoebVGMioLpzF0iB78P5sAPi4O6IIu/XtP3Olc2D/dK+RqBo6gHxkMDYfzuVtbwSTUeYumigBco81VbzLGDgYsdXCyC48T9f6APtUwiTtFHnFcAAR1DNDRutGcGAcutzLApwqc1c0NKvgP/qQ3nvtyk0LjwC6VXyL8fsQWvEobRYbGUsHE4PuVTklvvurIC50buyXPIF7k4gp0nYullcvA0sdHs2Q9wWOWZCWz/7nWfVYY4OYy16SoCbyMPlvustT5+L/8CAJ/N55BImKr3xqzVjBVVANAXETCXm2mWLOwdSExKdoO+T15WYGyn/B+OyKYfYWOAm3GObShsFzg6TbOSX0nD2T9aV96Qofqahh6Lx95KMe3iTM8jkMYJsvAFNG1U3wJ284Kdih8OlpsKSL0O4MplvN3kto1ikwvAV7qDUQKS8kVCpYC6c6qDj5HynbM5uFdxZGDt8ua8221vuWpZDjTrg8Dl1pJ60IEc3vtLxsf76YoEwAwE6bGmE8VWZyTvNTc0JmkV/vsuVuKztelmicyHsqUJFhDN2+D4Vqu+kiKlG1lc8QwBt3B0v3qenmqi13TURKK62bYe/ADmbPstmtvjswXt0Ew4g3hH/Q2GW9jAH X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?zmQoHnMAbRmwuLx48neZuEtu2rvTd8smVggzEcYcOVV/ZHclMZjuZbITFiAD?= =?us-ascii?Q?dAhzjW0YBhkfnZwMcpYilarGtCCwOTJDbKAKDagWaZQs8GtUqqFKxU0IBDcn?= =?us-ascii?Q?RRvmNL4PfX7RQLjrx9GH3zT0P5MX9NHJyu05G1BHdk4/VwhdsSABmpaYT0Ft?= =?us-ascii?Q?3rni3ui6HEAeSF/0sFb+FhWotAjWZDFZ41AYfx7S4hOrw2nizMqkQIOvFAno?= =?us-ascii?Q?hcoCMdeBn3/aLkVwe0VRlSn04SbB4aqFd59uqLD7IJ+ELwUjlJKx+5zWPtJC?= =?us-ascii?Q?INe2cLygmiINM32M6qsmDILV9C7tlblUh+Vlyb3tvUnMhKpDo6L5zP9tHKXW?= =?us-ascii?Q?buuxQ57+7AtqTD18m+nl3tZoitdrT/jd72nSU9p5Kjb+pHEQuwbrXhaikHsI?= =?us-ascii?Q?f867PNvkBxRmbMLyLA+W+YRvHD+99mpgzZcTEEJl5RJbqkhwktrkIK8Z4C22?= =?us-ascii?Q?l3hYYiEt+m5R/V4WFn5fl7REIx5JJ9h/DTJUzS+j6YIdf6ta+0Pekhkz7aOh?= =?us-ascii?Q?jKh6ysL3lWbC+fc6IkDpr4+WoDMzbwBuiiEKhLrrpPozwa/ncDwOIH8oE07Q?= =?us-ascii?Q?S121jnrAfDN7OP+gTjYaYGKcf2C1+MEvlBjpe6N0RJnkPgyxAG9Kkgt2G8kP?= =?us-ascii?Q?WiihFmB5E4F0rwUAuRi7Hk77g/NnuW11haV90ASun7JUhEZR1NqqDfp6v4JO?= =?us-ascii?Q?aHibzarfhNJcdY2c+cmM84RvG2F8/mb7QBtRIZMciGWaZeCeI0ppxfHfF41n?= =?us-ascii?Q?MuYhhigZsypM0FpOkMXrB01fI170kg/4LC7xix1BTpsbQF4zrsyZ4bICqxGd?= =?us-ascii?Q?xOOOy90Su0yxBjTNnq1ZXmb7sEAF8gfJVDCebx9rCT2GtEuseSxeBi6tp3RA?= =?us-ascii?Q?EiUrac/yQI50t9rKya6A7xKDDml7NWDFpBZHF9OlddfUNMzqXW/xBukg1S1u?= =?us-ascii?Q?t0sfGD4Jhz7qKcT6HuK9/GYKqoYXLR/TsENk/D01dR5TxJ7oppFAHedhJGHQ?= =?us-ascii?Q?zN6Ax1bG6OCrfROthdNxoCQ07WFGi9Da5nk9eMBYk7URrCJiS1WjhVRgFzMv?= =?us-ascii?Q?orCZ8++z7xBNhx8v4k3/+ZoXlUC4wDeX0gPuNzlLGE26a5PYUcMjqGArdCsq?= =?us-ascii?Q?mfLQ1NTjDD4DAGCgoaKtqTxCakktdrHJC9YOCigg4Bs4Ix+3CRDSrQ/CZR8y?= =?us-ascii?Q?J4eIVoyB7sobccmvnmA1Wl6BkJRJYPEf4iTivFa179sewX+teeYfA5V/zPp0?= =?us-ascii?Q?+hiSpmgu0I1ILaoz1v/xk6LbrrnutPQ7jalWLcM80g=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 10122cb4-842d-4f84-67d7-08dc7c3cacd8 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2024 21:58:42.1781 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM8P250MB0140 Subject: [FFmpeg-devel] [PATCH 01/12] avutil/avassert: Add av_unreachable and av_assume() macros X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Useful to let the compiler and static analyzers know that something is unreachable without adding an av_assert (which would be either dead for the compiler or add runtime overhead) for this. Signed-off-by: Andreas Rheinhardt --- I can add more macros if it is desired to differentiate between ASSERT_LEVEL == 1 and ASSERT_LEVEL > 1. doc/APIchanges | 3 +++ libavutil/avassert.h | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/doc/APIchanges b/doc/APIchanges index 60f056b863..5a3ae37999 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07 API changes, most recent first: +2024-05-24 - xxxxxxxxxx - lavu 59.xx.100 - avassert.h + Add av_unreachable and av_assume() macros. + 2024-05-23 - xxxxxxxxxx - lavu 59.20.100 - channel_layout.h Add av_channel_layout_ambisonic_order(). diff --git a/libavutil/avassert.h b/libavutil/avassert.h index 1895fb7551..41e29c7687 100644 --- a/libavutil/avassert.h +++ b/libavutil/avassert.h @@ -31,6 +31,7 @@ #ifdef HAVE_AV_CONFIG_H # include "config.h" #endif +#include "attributes.h" #include "log.h" #include "macros.h" @@ -68,6 +69,38 @@ #define av_assert2_fpu() ((void)0) #endif +/** + * 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 av_assert0(0) +#define av_assume(cond) av_assert0(cond) +#elif AV_GCC_VERSION_AT_LEAST(4, 5) || AV_HAS_BUILTIN(__builtin_unreachable) +#define av_unreachable __builtin_unreachable() +#if AV_HAS_BUILTIN(__builtin_assume) +#define av_assume(cond) __builtin_assume(cond) +#else +#define av_assume(cond) do { \ + if (!(cond)) \ + __builtin_unreachable(); \ +} while (0) +#endif +#elif defined(_MSC_VER) +#define av_unreachable __assume(0) +#define av_assume(cond) __assume(cond) +#else +#define av_unreachable +#define av_assume(cond) +#endif + /** * Assert that floating point operations can be executed. * -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".