public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] middle-end/109559 - warning in system header not suppressed
@ 2024-02-05 12:57 Richard Biener
  0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2024-02-05 12:57 UTC (permalink / raw)
  To: gcc-patches; +Cc: Jakub Jelinek

set_inlining_locations looks at a possible macro expansion location
when the location is in a system header but it fails to update its
counter when there's no macro involved.  The following fixes that.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

This doesn't fix the observed diagnostic in the PR which I think is
now given by design since we diagnose inlined code from a system
header into a function not in a system header.  But I think it still
fixes a bug.

The whole set_inlining_locations is a bit pointless since all that
matters should be the location of the call (and its system header
status) then.  I'll also note that -Wno-system-headers doesn't
help and we don't have any flag to disable diagnosing 
inlined-from-system-header code either.

Unfortunately this is all from changes done by Martin Sebor so
it's difficult to tell the true intention.  The code in
set_inlining_locations doesn't really do what it documents
but fixing (I'll attach the "failed" patch in the PR) will
break testcases that test we diagnose inline copies.

Anyway - OK for the change below where I don't have any testcase.

Thanks,
Richard.

	PR middle-end/109559
	* tree-diagnostic.cc (set_inlining_locations): Always
	increment nsyslocs when loc is in a system header.
---
 gcc/tree-diagnostic.cc | 24 +++++++-----------------
 1 file changed, 7 insertions(+), 17 deletions(-)

diff --git a/gcc/tree-diagnostic.cc b/gcc/tree-diagnostic.cc
index a660c7d0785..e050a6eccf6 100644
--- a/gcc/tree-diagnostic.cc
+++ b/gcc/tree-diagnostic.cc
@@ -339,24 +339,14 @@ set_inlining_locations (diagnostic_context *,
       block = BLOCK_SUPERCONTEXT (block);
     }
 
+  if (in_system_header_at (loc))
+    ++nsyslocs;
+
+  /* When there is an inlining context use the macro expansion
+     location for the original location and bump up NSYSLOCS if
+     it's in a system header since it's not counted above.  */
   if (ilocs.length ())
-    {
-      /* When there is an inlining context use the macro expansion
-	 location for the original location and bump up NSYSLOCS if
-	 it's in a system header since it's not counted above.  */
-      location_t sysloc = expansion_point_location_if_in_system_header (loc);
-      if (sysloc != loc)
-	{
-	  loc = sysloc;
-	  ++nsyslocs;
-	}
-    }
-  else
-    {
-      /* When there's no inlining context use the original location
-	 and set NSYSLOCS accordingly.  */
-      nsyslocs = in_system_header_at (loc) != 0;
-    }
+    loc = expansion_point_location_if_in_system_header (loc);
 
   ilocs.safe_push (loc);
 
-- 
2.35.3

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-02-05 12:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-05 12:57 [PATCH] middle-end/109559 - warning in system header not suppressed Richard Biener

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).