public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug analyzer/99860] New: RFE: analyzer does not respect "restrict"
@ 2021-03-31 23:10 dmalcolm at gcc dot gnu.org
  2021-04-07 15:05 ` [Bug analyzer/99860] " dmalcolm at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: dmalcolm at gcc dot gnu.org @ 2021-03-31 23:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99860

            Bug ID: 99860
           Summary: RFE: analyzer does not respect "restrict"
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: analyzer
          Assignee: dmalcolm at gcc dot gnu.org
          Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

The analyzer currently is very conservative about aliasing, and assumes that
anything that could be aliased by a pointer gets clobbered when a write occurs
through that pointer.

Am filing this bug to remind me to better support pointers marked with
"restrict".

Probably should also warn about places where the analyzer detects that restrict
isn't being honored.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug analyzer/99860] RFE: analyzer does not respect "restrict"
  2021-03-31 23:10 [Bug analyzer/99860] New: RFE: analyzer does not respect "restrict" dmalcolm at gcc dot gnu.org
@ 2021-04-07 15:05 ` dmalcolm at gcc dot gnu.org
  2022-07-27 22:54 ` dmalcolm at gcc dot gnu.org
  2023-08-29 22:16 ` cvs-commit at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: dmalcolm at gcc dot gnu.org @ 2021-04-07 15:05 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99860

--- Comment #1 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Notes on "restrict":
  https://en.cppreference.com/w/c/language/restrict

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug analyzer/99860] RFE: analyzer does not respect "restrict"
  2021-03-31 23:10 [Bug analyzer/99860] New: RFE: analyzer does not respect "restrict" dmalcolm at gcc dot gnu.org
  2021-04-07 15:05 ` [Bug analyzer/99860] " dmalcolm at gcc dot gnu.org
@ 2022-07-27 22:54 ` dmalcolm at gcc dot gnu.org
  2023-08-29 22:16 ` cvs-commit at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: dmalcolm at gcc dot gnu.org @ 2022-07-27 22:54 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99860

--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Quoting Paul Eggert here:
  https://lists.gnu.org/archive/html/bug-gnulib/2022-07/msg00066.html

> I looked into this a bit more, and it turns out that GCC was wrong
> about 
> what happens when some parameters have 'restrict' and others do not,
> and 
> this was partly because the C Standard itself is so opaque. (The GCC
> bug 
> has been fixed.)
> 
> In 2018 Troy Johnson and Bill Homer of Cray proposed[1] adding
> examples 
> to the C standard to try to make it clearer what happens when some 
> function parameters are 'restrict' and others are not. These examples
> have been added (with some changes) to section 6.7.3.1 of the current
> (June 2022) draft of the next C standard.[2] Perhaps they will help 
> explain things better.
> 
> The confusion in this obscure area for so many years suggests that 
> Gnulib would be better off following the lead of POSIX and the C 
> standard, by using 'restrict' on all relevant parameters rather than 
> trying to be clever and use 'restrict' with only some parameters. 
> Although omitting some 'restrict's shortens the code, it complicates 
> analysis (for both humans and compilers) so much that it's more
> trouble 
> than its worth.
> 
> [1] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2260.pdf
> [2] https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2912.pdf
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug analyzer/99860] RFE: analyzer does not respect "restrict"
  2021-03-31 23:10 [Bug analyzer/99860] New: RFE: analyzer does not respect "restrict" dmalcolm at gcc dot gnu.org
  2021-04-07 15:05 ` [Bug analyzer/99860] " dmalcolm at gcc dot gnu.org
  2022-07-27 22:54 ` dmalcolm at gcc dot gnu.org
@ 2023-08-29 22:16 ` cvs-commit at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-08-29 22:16 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99860

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalcolm@gcc.gnu.org>:

https://gcc.gnu.org/g:034d99e81484fbb83f15da91ee1a744b9301b04f

commit r14-3556-g034d99e81484fbb83f15da91ee1a744b9301b04f
Author: David Malcolm <dmalcolm@redhat.com>
Date:   Tue Aug 29 18:12:09 2023 -0400

    analyzer: new warning: -Wanalyzer-overlapping-buffers [PR99860]

    gcc/ChangeLog:
            PR analyzer/99860
            * Makefile.in (ANALYZER_OBJS): Add analyzer/ranges.o.

    gcc/analyzer/ChangeLog:
            PR analyzer/99860
            * analyzer-selftests.cc (selftest::run_analyzer_selftests): Call
            selftest::analyzer_ranges_cc_tests.
            * analyzer-selftests.h (selftest::run_analyzer_selftests): New
            decl.
            * analyzer.opt (Wanalyzer-overlapping-buffers): New option.
            * call-details.cc: Include "analyzer/ranges.h" and "make-unique.h".
            (class overlapping_buffers): New.
            (call_details::complain_about_overlap): New.
            * call-details.h (call_details::complain_about_overlap): New decl.
            * kf.cc (kf_memcpy_memmove::impl_call_pre): Call
            cd.complain_about_overlap for memcpy and memcpy_chk.
            (kf_strcat::impl_call_pre): Call cd.complain_about_overlap.
            (kf_strcpy::impl_call_pre): Likewise.
            * ranges.cc: New file.
            * ranges.h: New file.

    gcc/ChangeLog:
            PR analyzer/99860
            * doc/invoke.texi: Add -Wanalyzer-overlapping-buffers.

    gcc/testsuite/ChangeLog:
            PR analyzer/99860
            * c-c++-common/analyzer/overlapping-buffers.c: New test.

    Signed-off-by: David Malcolm <dmalcolm@redhat.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-08-29 22:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-31 23:10 [Bug analyzer/99860] New: RFE: analyzer does not respect "restrict" dmalcolm at gcc dot gnu.org
2021-04-07 15:05 ` [Bug analyzer/99860] " dmalcolm at gcc dot gnu.org
2022-07-27 22:54 ` dmalcolm at gcc dot gnu.org
2023-08-29 22:16 ` cvs-commit at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).