From 74498be0e6041d2abcd17cf2c0eed6cb034ce6a3 Mon Sep 17 00:00:00 2001
From: Jason Merrill <jason@redhat.com>
Date: Wed, 20 Nov 2024 10:43:30 +0100
Subject: [PATCH] c++: modules and debug marker stmts

21_strings/basic_string/operations/contains/nonnull.cc was failing because
the module was built with debug markers and the testcase was built not
expecting debug markers, so we crashed in lower_stmt.  Let's accommodate
this by discarding debug marker statements we don't want.

gcc/cp/ChangeLog:

	* module.cc (trees_in::core_vals) [STATEMENT_LIST]: Skip
	DEBUG_BEGIN_STMT if !MAY_HAVE_DEBUG_MARKER_STMTS.
---
 gcc/cp/module.cc | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
index 4136fdceb9f6..3b25f9569280 100644
--- a/gcc/cp/module.cc
+++ b/gcc/cp/module.cc
@@ -6895,7 +6895,12 @@ trees_in::core_vals (tree t)
       {
 	tree_stmt_iterator iter = tsi_start (t);
 	for (tree stmt; RT (stmt);)
-	  tsi_link_after (&iter, stmt, TSI_CONTINUE_LINKING);
+	  {
+	    if (TREE_CODE (stmt) == DEBUG_BEGIN_STMT
+		&& !MAY_HAVE_DEBUG_MARKER_STMTS)
+	      continue;
+	    tsi_link_after (&iter, stmt, TSI_CONTINUE_LINKING);
+	  }
       }
       break;
 
-- 
GitLab