https://gcc.gnu.org/g:74498be0e6041d2abcd17cf2c0eed6cb034ce6a3

commit r15-5571-g74498be0e6041d2abcd17cf2c0eed6cb034ce6a3
Author: Jason Merrill <ja...@redhat.com>
Date:   Wed Nov 20 10:43:30 2024 +0100

    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.

Diff:
---
 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;

Reply via email to