From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 20E7F385800A; Wed, 23 Feb 2022 16:57:37 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 20E7F385800A From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/99578] [11/12 Regression] gcc-11 -Warray-bounds or -Wstringop-overread warning when accessing a pointer from integer literal Date: Wed, 23 Feb 2022 16:57:37 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: diagnostic X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 11.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: 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, 23 Feb 2022 16:57:38 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99578 --- Comment #26 from Jakub Jelinek --- (In reply to Martin Sebor from comment #25) > In my opinion, code that deliberately uses invalid pointers (e.g., hardwi= red > addresses) should be explicitly annotated, e.g., by some attribute. This > approach has at least two advantages: 1) it makes the intent clear to the > reader, and 2) by declaring the object it lets GCC enforce type safety as > well as check for out-of-bounds access to it. GCC already provides two s= uch > attributes: the AVR address and io attributes. Rather than relying on > heuristics I would suggest to make the address attribute (or one like it) > available on all targets and use it for this purpose. (I started working= on > it last November but didn't finish it.) That is nonsense. The amount of code in the wild that relies on (type *)CONSTANT working is insane, you can't annotate it all. And it has worked fine for decades. The pointers aren't invalid, they point to valid objects in the address space. POSIX supports MAP_FIXED for a reason (and in many embedded cases one doesn= 't even have an MMU and I/O or other special areas are mapped directly).=