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 ESMTPS id 321E94D882 for ; Tue, 25 Feb 2025 23:03:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CD93668CD66; Wed, 26 Feb 2025 01:03:26 +0200 (EET) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2029.outbound.protection.outlook.com [40.92.89.29]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0972E68B63D for ; Wed, 26 Feb 2025 01:03:20 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DGTnAF7tb5O4aDYl2cspl4Ot5lXCsWw0QNJa+4XY5/aptBncDbJe4o73epXKJvAIkq24nMhylMbgt6pODI+29dm2AL0CVaPobfZbeuAuqdRpQq7pz4D8QiYGgIFkcf9juKvOqN4ZNhoGzfssDYbGNnehbnB2vgCO+8hbX7VkZxhjm5+HB7QQl6Slri3G7OkH+OA6H4Q1gzFUgqHAo5pjKjWC1PzRCBkU3hPwQ03C9avKZrv4SnhUCniTf+2rdiYgp24afWJClFKbNJNMJNrZOwvR91FNiErzvxQg/bOw8h1LTtb9e2BD9jFmhB+JEEfDJ1ud2+JzMFdLaXNzTMeH2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=ByHKL7c1hexr6J6Q2F1BzavBMey6iR0uHXPMaXv1bC0=; b=L31tqUIUXrLculTq+0EKWLTCjzZgW105WVJK35gVTcA5lLEEV9ucN3X5Ho1mb166MRGRRaTfZlT4JUobjIYiN/tja6cHSKuiN/LdS40L3u7wkK1SA6QhmmnqPPwQKkT+qLX85sS7u+YVylSoSIrXrggRabjihFrMTzx7Ij8D5BM5pZ3YmPCqdQBL6zHlpsB5dpxPZT3yuGaokrGsYYw/cUSlqCJsBXWQ0dNrohraEIRptSNRJ3Orr+p/cboY+GX3XNHKNzvN3Y8FGxb3bZ44HB7Jq8jVkzCekYQ+PGIC8kMrgKqODZO1grF4r2F4jRBxtgjOFKkZ+T7fjp8CMiv6DA== 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=ByHKL7c1hexr6J6Q2F1BzavBMey6iR0uHXPMaXv1bC0=; b=ui7cqC9W1PErQhOakLWsiY+pAeyOEp25NCCJgdRz3NwF06NDvtKQ7KEXBkBPuZIQFgVOpVz0Rs52gR6OEuiwU41vB5kKgqFlZ6O6PYXybdbsxH+3uH4rg063vs1YrASgQdDbCxgdeYG/pGX2lFbOlDgg9GdEJ9EcvjeAxpLsycXhRHiVGoCOw4kDV5EtJwTgzoJ58CcQxo5zjRioDvu20VLCT747YB5QQdS3tFA1TnJ+KInFYEPampTFtfb20xIkjGSsoM+B7nym+vf4UuhXqkFLAJeLw88+Z5YntvP8OzHON/oyE97jTTIxlbP0abalFmabI8lFEHbSS1xeZuA57w== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PRAP250MB0709.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:295::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.14; Tue, 25 Feb 2025 23:03:18 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::384d:40d4:ecb7:1c9%5]) with mapi id 15.20.8489.014; Tue, 25 Feb 2025 23:03:18 +0000 Message-ID: Date: Wed, 26 Feb 2025 00:03:17 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20250225213717.3373852-1-prka@google.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20250225213717.3373852-1-prka@google.com> X-ClientProxiedBy: FR4P281CA0356.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f4::20) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <0ced6db1-1889-4121-a4a9-b52d1e466ec0@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PRAP250MB0709:EE_ X-MS-Office365-Filtering-Correlation-Id: 741c2521-c0df-40b1-898f-08dd55f097a3 X-Microsoft-Antispam: BCL:0; ARA:14566002|6090799003|15080799006|8060799006|19110799003|5072599009|7092599003|461199028|10035399004|440099028|3412199025; X-Microsoft-Antispam-Message-Info: =?utf-8?B?WXJmTHYyUWxBb0I5dFJqUG9mdmpCUGhyYUpOR1F3ZGF3WjljQ3hFR3lZcUh4?= =?utf-8?B?T1JsRzY1WncreElTdmtMMDF4MDRrNTdVcHpFUGRpQ0VRQ2dhbzZIMG9rK0lh?= =?utf-8?B?Q2tmUlFHYVIvM2lTejM2Rm5XZkVtVVQ3d2xLU1JianZHQTJaWjNBU2NoYmd5?= =?utf-8?B?RkFQd1ZZS292OXZNcUpMWVhtUVRBa000Vk4yQmJsNkZBdmJoS3FndmJMcXYw?= =?utf-8?B?YjgvelZmT3ZYVmhkTk1SaFplUExpOTFxUGpvK3hpd2pISGdpVnJvbXpBd0Vs?= =?utf-8?B?T0VHT1JiMGdTRnBEaG50OWpuVnhoRGZ0SEtBWDF5bCtkMTRmWlkzY2JQNG1O?= =?utf-8?B?cncvYkh5NWxvNmo0ZWFxRW5PcW4zdTJQS2xiclZzMGN2VFRrajd5d0FxQkJy?= =?utf-8?B?VnJQVXMycnE0b21JNmY5c2hHUXF4WkZsamcxOGRtcWpMQW42dHRWM2cxZk9l?= =?utf-8?B?bTQ1c0kyZGpjNXQrd0tvSUk5YzE3TXEvVmtXejZUTXhmL2xkT2Z1MFExT3l0?= =?utf-8?B?NVl4VjJWczVhWXpjamI3bmo1UkdEeUhySTRBVlE3MkZJMTZadnJaS0w0RXgv?= =?utf-8?B?aWNtTS9jSlJFZGNPRDJEZTlLcitOTEVsUWNqd0xtRGlXY3FDRzUwMStiUTdV?= =?utf-8?B?cXJyYmUzN3VWV3VFYjUyYUhpRmRYTGYvMEJYRCtUY0RNeE1LQTZLeThNRFox?= =?utf-8?B?bGxPcVM3OXhtZ0hzSGNBUS9BZzV6VWV0Y0JpWlBHWTdzOXp2TklxdnBKQkpo?= =?utf-8?B?QW1nTUlBbDZSSmFlZ1BYSVc3QWFCdkpXMExvMkt0TzJaejVpc2NlT2hxZXVv?= =?utf-8?B?OHg3ZjVuWUszZ2crNTNLblBjVjB6YVprZ1lBU09xZ0dtMmRqSzZlc1YrWGdv?= =?utf-8?B?SGVPeHVwS2FlUndqemNud0xyRko4bTdrVzE0eWVzbGZKVlM0YTNPRGwyWkxt?= =?utf-8?B?MTd1Z3FhbWlVRi83Q1NQOFpUMGpMc1JhS2NMUnBBUUVBN0pLbGNIaFlsSXpl?= =?utf-8?B?RzlBM0hsaU5wT2tmd2xZdmd0YzR3NTV6aXlTMnBKNndLKzg2NFNVcmNncXRD?= =?utf-8?B?QUFodVJySWIzL2Yxb3A2YzJJY0RsM1R3TGl2MytGczJsa0VneDA4RERvaTAv?= =?utf-8?B?YUt2dG5xeDJjYmUzZFhINTcvcnd1V0VXMDJ4QXl0QVFPdEVZZWVYNlowdHNs?= =?utf-8?B?S3VYN2RlWnA4VS93TklvZThiZldicWFYVHpVS0hNYkJxeTR2TnlUTy94djNu?= =?utf-8?B?ZXdpdGhEYXp5UW0zeHJhc0M4RUtmWldrSTR2dUtTbWRoQ0RvbUlmSENnZ2FI?= =?utf-8?B?R0tqRVEwdmt2TVZGeU1oYTBySTMzMlVpbWtLSGNCVWdjLytZcVJBa1dzNHhC?= =?utf-8?B?WmJ6SlREenVsdTdSY1pVcWVnZUo4alcvb1hWTm13MTc3Q3JzWFMxODdmb29h?= =?utf-8?B?elgxZWI1cXJhREJkTExrckxxVmNjUnNuSWRvRDV6b09BRmFIcER6VHAvRERu?= =?utf-8?B?VzRXT2tLM25kSWhmZnJtWkFHemhQR3V0VDJsdkR3OWhpS2pGelBMSkh6OHIw?= =?utf-8?B?S3VtUT09?= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?TVN1VlhaaWVuUmJmOWlJV2t2YU1zcGxleDJEd3ROaGtHL2dYZHk2TFdibHd5?= =?utf-8?B?aGRXSkdpTzlJVWVMeGkxT2NIYndBcEcyNkhUU3Y2Y0VyQXVpbzN0aWlhZFkv?= =?utf-8?B?YklyVWkvZkQ1UTN6aFR5U25UY1dHYWxETTcvQTNaZjNESldRUHluV0FVQ1FD?= =?utf-8?B?UVNpdUpoUGRjN1kvNFVaNkpHeGpGRkVzT1p4RkNpWEROV3VwNzErRUpjb0Vx?= =?utf-8?B?ZFBCei9sMWErNkkwYndQRXN1R0VuY3FRSE9ETEF4Y2toWllCbEhwcFRzeVVF?= =?utf-8?B?Q3BOdU1FQWpYSHFDc2tPZklEeWd4aXRaMHlzajBTbUtaeW5UL3FIay9zNGJF?= =?utf-8?B?T1NhQ0E4eVZMMU1xVCtjMWJiRGlWQm5UVlpuS1BHQng0R05KbFoyMEN6UXdm?= =?utf-8?B?MjMyWUFsdGpjSUIwZ1ByNEo5alpFT3pqNlBOcUNtaWZmbHgrOVNMZEZIWUFM?= =?utf-8?B?QmM5YWt1RG1mRWlZcWFEdUNwVDFOWVdlcnk3NndhN1lIVzg2NEp5dzMzNnVp?= =?utf-8?B?WnloT0ZQQ1p6U1F2SWVXRElGZVh2ME9yWUUvUTZwN1BmSkdzc3Bnd0RWTXV1?= =?utf-8?B?TlpNSEF1aHh5TUJMZnB5cytGUVJOeFMzYVRQZXFIMW01S1pvVnpFbm5DY3or?= =?utf-8?B?WFh4cC9OOXlUcjFIU2NrTm4rTTRFd29SdHdrdXZ5cStQNmpXenZBdTAzS1p0?= =?utf-8?B?azZ0S2hXRzd3VDZ5NzJSWHhTcjBTRmRocU9pVHFkV2xOTzJ4TElnd1AwMy83?= =?utf-8?B?V3pTSHVzMEJlUURqRW9RUTFNOUx3YmhqYmZRRHRHcmNCQkpYZytaSHF3Nk5H?= =?utf-8?B?ZVgwdEdEN3NLeXA3QzVIeWMwUFZyaWg1VlR2RVZCQThNL0FLNmJsUXpKMnNS?= =?utf-8?B?S0ZJVHN2VjZGbE91TysrWmw4S1RWbnUvRTdDQUR1VjR0MEJsOERsMEY5YUtT?= =?utf-8?B?RWFIYi80aThtaG1RS0k5M0p6bmppaUtHUzdVYnIvenYreDZiU05RcFlQZHpw?= =?utf-8?B?dGxJbHRPU2tCR3BuUnVZV3d6MExCZHF5bWdOQWJqTlV4ZGZRdkpLd2wwYjhv?= =?utf-8?B?SFZsVmQ2ZjA4aXB5VmRjL3lKWVV4K1hrQzRKWW5EZkxublNhSWQxNFhjeWZG?= =?utf-8?B?VUQ4YTZvOFVFZHIxK2gwdEFCNGdsTGF2V2xkMlJUczZHbkZKbi9ka3RuOVAx?= =?utf-8?B?NU1oS1RUK1BhVFBLV0NzMll3R1lyMy96ZEU1OHNZSUJyMXhDaGVlN2hxNEtH?= =?utf-8?B?Zm95MmdnWUxROU1DL0hDNzJRVE5oNER6QTFoSTJabGI3aXNqUTY2elJITUNY?= =?utf-8?B?MUJqVE1TbXZNTldpZ0drMTM2K1pBSXo1aFFmaVZ6L3FaUzVqcktUTU5DS0kr?= =?utf-8?B?bGRIcDJjZVB4dEdSaFVhNjJmQXc0eVp6cldXd1hUKzN3TTQvMmZHT1djTXVl?= =?utf-8?B?UndpMVRHdWVvTEhITXlvSFp5OWpaOTRhb0lnbzhQV0d5UHBBU3FXQnQ0TkQr?= =?utf-8?B?WVlRRE1SdjlOZm9Yd3d6NHVJU3VCRHJvWFJSeWtacXIxdGRZVTRZM0I5U01E?= =?utf-8?B?cGhkZkt4b2VNd0p1T3hVS2E3NjJ6Z0NiRE54M1BxVFM0d2MrM3NGSTVaZTV2?= =?utf-8?B?b0JrUzROWnk0WHZGWjdoNVE2ODBtYVZ2cm5tc0dKb0xiTjN3bEpuNFpMdGkw?= =?utf-8?B?RkVCeFJnemZmeW45M0RqSGxmWFZpaisyZFVnSE5BUUxuYU82NlFjMmRRPT0=?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 741c2521-c0df-40b1-898f-08dd55f097a3 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2025 23:03:18.3995 (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: PRAP250MB0709 Subject: Re: [FFmpeg-devel] [PATCH] Mark C globals with small code model 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 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: Pranav Kant via ffmpeg-devel: > By default, all globals in C/C++ compiled by clang are allocated > in non-large data sections. See [1] for background on code models. > For PIC (Position independent code), this is fine as long as binary is > small but as binary size increases, users maybe want to use medium/large > code models (-mcmodel=medium) which moves data in to large sections. > As data in these large sections cannot be accessed using PIC code > anymore (as it may be too far away), compiler ends up using a different > instruction sequence when building C/C++ code -- using GOT to access > these globals (which can be relaxed by linker at link time if binary > ends up being smaller). However, assembly files continue to access these > globals defined in C/C++ files using older (and invalid instruction > sequence). So, we mark all such globals with an attribute that forces > them to be allocated in small sections allowing them to validly be > accessed from the assembly code. > > This patch should not have any affect on builds that use small code > model, which is the default mode. > > [1] https://eli.thegreenplace.net/2012/01/03/understanding-the-x64-code-models > --- > libavcodec/ac3dsp.c | 2 +- > libavcodec/cabac.c | 3 ++- > libavcodec/x86/constants.c | 8 ++++++++ > libavutil/attributes.h | 6 ++++++ > 4 files changed, 17 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/ac3dsp.c b/libavcodec/ac3dsp.c > index 730fa70fff..43b4fcbda9 100644 > --- a/libavcodec/ac3dsp.c > +++ b/libavcodec/ac3dsp.c > @@ -104,7 +104,7 @@ static void ac3_update_bap_counts_c(uint16_t mant_cnt[16], uint8_t *bap, > mant_cnt[bap[len]]++; > } > > -DECLARE_ALIGNED(16, const uint16_t, ff_ac3_bap_bits)[16] = { > +av_mcmodel_small DECLARE_ALIGNED(16, const uint16_t, ff_ac3_bap_bits)[16] = { > 0, 0, 0, 3, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16 > }; > > diff --git a/libavcodec/cabac.c b/libavcodec/cabac.c > index 7d41cd2ae6..dfc3ba135a 100644 > --- a/libavcodec/cabac.c > +++ b/libavcodec/cabac.c > @@ -24,12 +24,13 @@ > * Context Adaptive Binary Arithmetic Coder. > */ > > +#include "libavutil/attributes.h" > #include "libavutil/error.h" > #include "libavutil/mem_internal.h" > > #include "cabac.h" > > -DECLARE_ASM_ALIGNED(1, const uint8_t, ff_h264_cabac_tables)[512 + 4*2*64 + 4*64 + 63] = { > +av_mcmodel_small DECLARE_ASM_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, > diff --git a/libavcodec/x86/constants.c b/libavcodec/x86/constants.c > index bc7f2b17b8..9a5af2871c 100644 > --- a/libavcodec/x86/constants.c > +++ b/libavcodec/x86/constants.c > @@ -18,17 +18,21 @@ > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > */ > > +#include "libavutil/attributes.h" > #include "libavutil/mem_internal.h" > #include "libavutil/x86/asm.h" // for xmm_reg > #include "constants.h" > > +av_mcmodel_small > DECLARE_ALIGNED(32, const ymm_reg, ff_pw_1) = { 0x0001000100010001ULL, 0x0001000100010001ULL, > 0x0001000100010001ULL, 0x0001000100010001ULL }; > DECLARE_ALIGNED(32, const ymm_reg, ff_pw_2) = { 0x0002000200020002ULL, 0x0002000200020002ULL, > 0x0002000200020002ULL, 0x0002000200020002ULL }; > DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_3) = { 0x0003000300030003ULL, 0x0003000300030003ULL }; > +av_mcmodel_small > DECLARE_ASM_ALIGNED(32, const ymm_reg, ff_pw_4) = { 0x0004000400040004ULL, 0x0004000400040004ULL, > 0x0004000400040004ULL, 0x0004000400040004ULL }; > +av_mcmodel_small > DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_5) = { 0x0005000500050005ULL, 0x0005000500050005ULL }; > DECLARE_ALIGNED(16, const xmm_reg, ff_pw_8) = { 0x0008000800080008ULL, 0x0008000800080008ULL }; > DECLARE_ASM_ALIGNED(16, const xmm_reg, ff_pw_9) = { 0x0009000900090009ULL, 0x0009000900090009ULL }; > @@ -49,6 +53,7 @@ DECLARE_ALIGNED(32, const ymm_reg, ff_pw_256) = { 0x0100010001000100ULL, 0x010 > DECLARE_ALIGNED(32, const ymm_reg, ff_pw_512) = { 0x0200020002000200ULL, 0x0200020002000200ULL, > 0x0200020002000200ULL, 0x0200020002000200ULL }; > DECLARE_ALIGNED(16, const xmm_reg, ff_pw_1019) = { 0x03FB03FB03FB03FBULL, 0x03FB03FB03FB03FBULL }; > +av_mcmodel_small > DECLARE_ALIGNED(32, const ymm_reg, ff_pw_1023) = { 0x03ff03ff03ff03ffULL, 0x03ff03ff03ff03ffULL, > 0x03ff03ff03ff03ffULL, 0x03ff03ff03ff03ffULL}; > DECLARE_ALIGNED(32, const ymm_reg, ff_pw_1024) = { 0x0400040004000400ULL, 0x0400040004000400ULL, > @@ -66,13 +71,16 @@ DECLARE_ALIGNED(32, const ymm_reg, ff_pw_m1) = { 0xFFFFFFFFFFFFFFFFULL, 0xFFF > > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_0) = { 0x0000000000000000ULL, 0x0000000000000000ULL, > 0x0000000000000000ULL, 0x0000000000000000ULL }; > +av_mcmodel_small > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_1) = { 0x0101010101010101ULL, 0x0101010101010101ULL, > 0x0101010101010101ULL, 0x0101010101010101ULL }; > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_2) = { 0x0202020202020202ULL, 0x0202020202020202ULL, > 0x0202020202020202ULL, 0x0202020202020202ULL }; > +av_mcmodel_small > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_3) = { 0x0303030303030303ULL, 0x0303030303030303ULL, > 0x0303030303030303ULL, 0x0303030303030303ULL }; > DECLARE_ALIGNED(32, const xmm_reg, ff_pb_15) = { 0x0F0F0F0F0F0F0F0FULL, 0x0F0F0F0F0F0F0F0FULL }; > +av_mcmodel_small > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_80) = { 0x8080808080808080ULL, 0x8080808080808080ULL, > 0x8080808080808080ULL, 0x8080808080808080ULL }; > DECLARE_ALIGNED(32, const ymm_reg, ff_pb_FE) = { 0xFEFEFEFEFEFEFEFEULL, 0xFEFEFEFEFEFEFEFEULL, > diff --git a/libavutil/attributes.h b/libavutil/attributes.h > index 04c615c952..704a7070db 100644 > --- a/libavutil/attributes.h > +++ b/libavutil/attributes.h > @@ -104,6 +104,12 @@ > # define attribute_deprecated > #endif > > +#if defined(__clang__) && __has_attribute(model) > +# define av_mcmodel_small __attribute__((model("small"))) > +#else > +# define av_mcmodel_small > +#endif This should be in attributes_internal.h. Or maybe we should add new macros in mem_internal.h for the case of variables with external linkage and static storage duration (one macro for the const case, one for the non-const case) that would automatically include your proposed attribute? > + > /** > * Disable warnings about deprecated features > * This is useful for sections of code kept for backward compatibility and _______________________________________________ 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".