Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2223966/?format=api
{ "id": 2223966, "url": "http://patchwork.ozlabs.org/api/patches/2223966/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/ri6ik9ryrx5.fsf@virgil.suse.cz/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<ri6ik9ryrx5.fsf@virgil.suse.cz>", "list_archive_url": null, "date": "2026-04-16T13:07:50", "name": "sra: Do not create bit-field type accesses during access propagation (PR124151)", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "466efec3908801ec0418988e084144c4a40a2e5e", "submitter": { "id": 4351, "url": "http://patchwork.ozlabs.org/api/people/4351/?format=api", "name": "Martin Jambor", "email": "mjambor@suse.cz" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/ri6ik9ryrx5.fsf@virgil.suse.cz/mbox/", "series": [ { "id": 500159, "url": "http://patchwork.ozlabs.org/api/series/500159/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=500159", "date": "2026-04-16T13:07:50", "name": "sra: Do not create bit-field type accesses during access propagation (PR124151)", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/500159/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2223966/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2223966/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256\n header.s=susede2_rsa header.b=a6jwpAOm;\n\tdkim=pass header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=nHu8RYBA;\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.a=rsa-sha256 header.s=susede2_rsa header.b=bYZmVhDH;\n\tdkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=YErKiQUf;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256\n header.s=susede2_rsa header.b=a6jwpAOm;\n\tdkim=pass header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=nHu8RYBA;\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.a=rsa-sha256 header.s=susede2_rsa header.b=bYZmVhDH;\n\tdkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=YErKiQUf", "sourceware.org;\n dmarc=none (p=none dis=none) header.from=suse.cz", "sourceware.org; spf=pass smtp.mailfrom=suse.cz", "server2.sourceware.org;\n arc=none smtp.remote-ip=195.135.223.130", "smtp-out1.suse.de;\n dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=bYZmVhDH;\n dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=YErKiQUf" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxJH50LFGz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 23:08:31 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 06B054BA900E\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 13:08:29 +0000 (GMT)", "from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130])\n by sourceware.org (Postfix) with ESMTPS id 825724BA901D\n for <gcc-patches@gcc.gnu.org>; Thu, 16 Apr 2026 13:07:56 +0000 (GMT)", "from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org\n [IPv6:2a07:de40:b281:104:10:150:64:97])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by smtp-out1.suse.de (Postfix) with ESMTPS id 8BA786A7F9;\n Thu, 16 Apr 2026 13:07:54 +0000 (UTC)", "from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n (No client certificate requested)\n by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 83A98593A3;\n Thu, 16 Apr 2026 13:07:54 +0000 (UTC)", "from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n by imap1.dmz-prg2.suse.org with ESMTPSA id aT0XICrf4Gl3RAAAD6G6ig\n (envelope-from <mjambor@suse.cz>); Thu, 16 Apr 2026 13:07:54 +0000" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 06B054BA900E", "OpenDKIM Filter v2.11.0 sourceware.org 825724BA901D" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 825724BA901D", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 825724BA901D", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776344876; cv=none;\n b=WnNp0ykpJjU62nE4ZNWYi/lxSMUuN0TawSFjR+ZBM0WVEyd/VgdLQ120fN8tsn/hZc+pbXGEsAAf8NqY+AXZlOWGzSktK09Tr7doIMSeLX2ym3IOHXNnN5WPDDoBcXC8DnPJ5fjNC0QKZs5If4JvD2XVqu+3mZasIqvhzdQNSUs=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776344876; c=relaxed/simple;\n bh=OF3Vp+0NFl2cI2moLEpv3d60JEqHLTIQ/Zzn/9nyfOw=;\n h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From:\n To:Subject:Date:Message-ID:MIME-Version;\n b=ixazs/TbV28AzUD5jjyzQw7760BBCtqZTCfzMhmLJpwyACYcaFha6FhtBxqe536MXhdzeCpo1Y22+dBAC4AZet8kX9NpXHZGngp9UHdzBXuCUG6lxNUta655Bly8ocnlrQTugRILzpFYlZib+1NPh7hHIsaqu5PFDeVfUBIcLYQ=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_rsa;\n t=1776344875;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type;\n bh=7NeUCleEJCrmi2dHAeYLhmHLkOg3ShMD7vQcBK5wmpw=;\n b=a6jwpAOmDhH1cZx7ugHS3Ca4CigsJEkF6Djdo8ndqGkdLKe8acWZBySVdxQythv8gwB2do\n 2BGL5XHTyqN7WEwd79ZuDnp86f+V8ZMLixYuXU8POpxOA9IWRZnm7070sDnltEP4RTVe8M\n +Wrkdjj+V8PuHSgp39Gu0h84KSCWQvo=", "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_ed25519; t=1776344875;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type;\n bh=7NeUCleEJCrmi2dHAeYLhmHLkOg3ShMD7vQcBK5wmpw=;\n b=nHu8RYBARycF9gWyutDDoJKb7erBPmYWtE70Glu8lGGfmyMEXeOTF+1HtamnxvIIT+ccLX\n ye8zGJEMNDEq69Ag==", "v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_rsa;\n t=1776344874;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type;\n bh=7NeUCleEJCrmi2dHAeYLhmHLkOg3ShMD7vQcBK5wmpw=;\n b=bYZmVhDHzV4qDA5biomnNOeUnqKqpmjZEnHgyoQfTXyQ2g06NvcA+DdP/LbMRylUR7+QHA\n pr+EWnfVS1CcHJj2T4Ak18TZGx9+lUXXtBJFCf2ovDggOC+7krYZDUKBb0CiE6siJ5ksSU\n P+UUNX67fTnYl3AzL3phq4UmFxWQrIQ=", "v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_ed25519; t=1776344874;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n mime-version:mime-version:content-type:content-type;\n bh=7NeUCleEJCrmi2dHAeYLhmHLkOg3ShMD7vQcBK5wmpw=;\n b=YErKiQUfNUYs2/y4AOUlUmsWMr1kyZVXQ8AJ2Fmqv9ruyLR+APOEkS7ZE/gz3+FmQ/+InH\n o+bURE5O6IGiuYCw==" ], "From": "Martin Jambor <mjambor@suse.cz>", "To": "GCC Patches <gcc-patches@gcc.gnu.org>", "Cc": "Richard Biener <rguenther@suse.de>", "Subject": "[PATCH] sra: Do not create bit-field type accesses during access\n propagation (PR124151)", "User-Agent": "Notmuch/0.38.3 (https://notmuchmail.org) Emacs/30.2\n (x86_64-suse-linux-gnu)", "Date": "Thu, 16 Apr 2026 15:07:50 +0200", "Message-ID": "<ri6ik9ryrx5.fsf@virgil.suse.cz>", "MIME-Version": "1.0", "Content-Type": "text/plain", "X-Rspamd-Action": "no action", "X-Rspamd-Server": "rspamd2.dmz-prg2.suse.org", "X-Spamd-Result": "default: False [-4.51 / 50.00]; BAYES_HAM(-3.00)[100.00%];\n NEURAL_HAM_LONG(-1.00)[-1.000];\n R_DKIM_ALLOW(-0.20)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];\n NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain];\n MX_GOOD(-0.01)[]; RCVD_TLS_ALL(0.00)[];\n FUZZY_RATELIMITED(0.00)[rspamd.com];\n RCVD_VIA_SMTP_AUTH(0.00)[]; ARC_NA(0.00)[];\n RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:106:10:150:64:167:received];\n MIME_TRACE(0.00)[0:+];\n RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[2a07:de40:b281:104:10:150:64:97:from];\n DWL_DNSWL_BLOCKED(0.00)[suse.cz:dkim];\n MID_RHS_MATCH_FROMTLD(0.00)[]; RCPT_COUNT_TWO(0.00)[2];\n RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[];\n FROM_HAS_DN(0.00)[];\n SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from];\n DBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns,virgil.suse.cz:mid,suse.cz:dkim,suse.cz:email,tree-sra.cc:url];\n TO_DN_ALL(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[];\n DKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];\n DKIM_TRACE(0.00)[suse.cz:+]", "X-Rspamd-Queue-Id": "8BA786A7F9", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "Hi,\n\nwhen SRA propagates bit-field propagations across assignments, it\nfirst attempts to use build_user_friendly_ref_for_offset to represent\nthe expression of the new accesses and a possible scalar replacement\nso that if there are any warnings generated for it, they are as nice\nas we can make them.\n\nHowever, this can lead to situations where, despite that the new\naccess has exactly the same type as the new old one, the new access\ncan be a bit field even though the old one spanned entire bytes, like\nin the testcase in this patch. This trips the verifier and I guess\nmay lead to data loss in the \"padding.\"\n\nSince r16-7406-g538da7baf6aee0 we do not initiate propagating for\nbit-fields and so we can just as well avoid creating any, so this\npatch skips them when searching for a user-friendly expression. In\npractical terms, this means that the propagated accesses have types\nsuch as unsigned char and are accessed via a MEM_REF.\n\nBootstrapped and tested on x86_64-linux. OK for master and all the\nactive release branches?\n\nThanks,\n\nMartin\n\n\ngcc/ChangeLog:\n\n2026-04-15 Martin Jambor <mjambor@suse.cz>\n\n\tPR tree-optimization/124151\n\t* tree-sra.cc (build_user_friendly_ref_for_offset): Skip\n\tbit-fields.\n\ngcc/testsuite/ChangeLog:\n\n2026-04-15 Martin Jambor <mjambor@suse.cz>\n\n\tPR tree-optimization/124151\n\t* gcc.dg/tree-ssa/pr124151.c: New test.\n---\n gcc/testsuite/gcc.dg/tree-ssa/pr124151.c | 31 ++++++++++++++++++++++++\n gcc/tree-sra.cc | 3 ++-\n 2 files changed, 33 insertions(+), 1 deletion(-)\n create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr124151.c", "diff": "diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c b/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c\nnew file mode 100644\nindex 00000000000..4424e2d2768\n--- /dev/null\n+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr124151.c\n@@ -0,0 +1,31 @@\n+/* { dg-do compile } */\n+/* { dg-options \"-O1\" } */\n+\n+typedef struct {\n+ bool : 1;\n+} Http2Identifier;\n+typedef struct {\n+ bool is_end;\n+ Http2Identifier identifier;\n+} Http2DataFrame;\n+typedef struct {\n+ Http2Identifier identifier;\n+ bool end_headers;\n+} Http2ContinuationFrame;\n+typedef struct {\n+ union {\n+ Http2DataFrame data;\n+ Http2ContinuationFrame continuation;\n+ };\n+} Http2Frame;\n+typedef struct {\n+ Http2Identifier stream_identifier;\n+} Http2RawHeader;\n+Http2RawHeader parse_http2_continuation_frame_http2_raw_header;\n+Http2Frame gh2f;\n+void http2_send_and_receive_preface() {\n+ Http2ContinuationFrame continuation_frame = {\n+ parse_http2_continuation_frame_http2_raw_header.stream_identifier, 0};\n+ Http2Frame frame = {.continuation = continuation_frame};\n+ gh2f = frame;\n+}\ndiff --git a/gcc/tree-sra.cc b/gcc/tree-sra.cc\nindex f4b672300aa..5352ea10838 100644\n--- a/gcc/tree-sra.cc\n+++ b/gcc/tree-sra.cc\n@@ -2139,7 +2139,8 @@ build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset,\n \t\t if (pos != offset)\n \t\t continue;\n \t\t}\n-\t else if (pos > offset || (pos + size) <= offset)\n+\t else if (pos > offset || (pos + size) <= offset\n+\t\t || (size % BITS_PER_UNIT) != 0)\n \t\tcontinue;\n \n \t expr = build3 (COMPONENT_REF, TREE_TYPE (fld), *res, fld,\n", "prefixes": [] }