]> git.ipfire.org Git - thirdparty/gcc.git/commit - gcc/analyzer/diagnostic-manager.h
analyzer: New option fanalyzer-show-events-in-system-headers [PR110543]
authorbenjamin priour <vultkayn@gcc.gnu.org>
Mon, 14 Aug 2023 15:36:21 +0000 (17:36 +0200)
committerbenjamin priour <vultkayn@gcc.gnu.org>
Mon, 14 Aug 2023 17:59:19 +0000 (19:59 +0200)
commitce8cdf5bcf96a2db6d7b9f656fc9ba58d7942a83
tree937253dc9b6ab09bc8bafa451948ed78d545ead4
parent1a43af04dd62b80f45700f94ed241347263ed773
analyzer: New option fanalyzer-show-events-in-system-headers [PR110543]

This patch introduces -fanalyzer-show-events-in-system-headers,
disabled by default.

This option reduces the noise of the analyzer emitted diagnostics
when dealing with system headers.
The new option only affects the display of the diagnostics,
but doesn't hinder the actual analysis.

Given a diagnostics path diving into a system header in the form
[
  prefix events...,
  system header call,
    system header entry,
    events within system headers...,
  system header return,
  suffix events...
]
then disabling the option (either by default or explicitly)
will shorten the path into:
[
  prefix events...,
  system header call,
  system header return,
  suffix events...
]

Signed-off-by: benjamin priour <priour.be@gmail.com>
gcc/analyzer/ChangeLog:

PR analyzer/110543
* analyzer.opt: Add new option.
* diagnostic-manager.cc
(diagnostic_manager::prune_path): Call prune_system_headers.
(prune_frame): New function that deletes all events in a frame.
(diagnostic_manager::prune_system_headers): New function.
* diagnostic-manager.h: Add prune_system_headers declaration.

gcc/ChangeLog:

PR analyzer/110543
* doc/invoke.texi: Add documentation of
fanalyzer-show-events-in-system-headers

gcc/testsuite/ChangeLog:

PR analyzer/110543
* g++.dg/analyzer/fanalyzer-show-events-in-system-headers-default.C:
New test.
* g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C:
New test.
* g++.dg/analyzer/fanalyzer-show-events-in-system-headers.C:
New test.
gcc/analyzer/analyzer.opt
gcc/analyzer/diagnostic-manager.cc
gcc/analyzer/diagnostic-manager.h
gcc/doc/invoke.texi
gcc/testsuite/g++.dg/analyzer/fanalyzer-show-events-in-system-headers-default.C [new file with mode: 0644]
gcc/testsuite/g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C [new file with mode: 0644]
gcc/testsuite/g++.dg/analyzer/fanalyzer-show-events-in-system-headers.C [new file with mode: 0644]