From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 262A039518B3; Wed, 24 Feb 2021 18:17:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 262A039518B3 From: "borysp at invisiblethingslab dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/99258] New: volatile struct access optimized away Date: Wed, 24 Feb 2021 18:17:29 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 10.2.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: borysp at invisiblethingslab dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Feb 2021 18:17:30 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99258 Bug ID: 99258 Summary: volatile struct access optimized away Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: borysp at invisiblethingslab dot com Target Milestone: --- Access to a volatile struct is optimized away, if the size of the struct is >16B (at least on x64 cpu with sse). Small repro: [borys@mowmiwuju test]$ cat a.c struct A { long a; long b; }; struct B { long a; long b; long c; }; void f(volatile struct A* x) { *x; } void g(volatile struct B* x) { *x; } [borys@mowmiwuju test]$ gcc --version=20 gcc (GCC) 10.2.0 [borys@mowmiwuju test]$ gcc -Wall -Wextra -std=3Dc11 -O2 -c a.c [borys@mowmiwuju test]$ objdump -d -Mintel a.o a.o: file format elf64-x86-64 Disassembly of section .text: 0000000000000000 : 0: f3 0f 6f 07 movdqu xmm0,XMMWORD PTR [rdi] 4: c3 ret=20=20=20=20 5: 66 66 2e 0f 1f 84 00 data16 cs nop WORD PTR [rax+rax*1+0x0] c: 00 00 00 00=20 0000000000000010 : 10: c3 ret=20 Testing on https://godbolt.org/ indicates this issue is present in all gcc versions. clang emits correct code for this test case.=