Split DWARF files aren't processed by the linker, so DW_MACRO_import
offsets aren't relocated and the .debug_macro.dwo sections aren't
deduplicated and merged.  There's no clear way for this to work for
split DWARF, so disable it.

gcc/ChangeLog:

        PR debug/111409
        * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
        dwarf_split_debug_info.

gcc/testsuite/ChangeLog:

        PR debug/111409
        * gcc.dg/pr111409.c: New test.
---
 gcc/ChangeLog                   | 6 ++++++
 gcc/dwarf2out.cc                | 1 +
 gcc/testsuite/ChangeLog         | 5 +++++
 gcc/testsuite/gcc.dg/pr111409.c | 7 +++++++
 4 files changed, 19 insertions(+)
 create mode 100644 gcc/testsuite/gcc.dg/pr111409.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b69160b025d..2b0ff902f55 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2023-09-13  Omar Sandoval  <osan...@osandov.com>
+
+       PR debug/111409
+       * dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
+       dwarf_split_debug_info.
+
 2023-09-12  Juzhe-Zhong  <juzhe.zh...@rivai.ai>
 
        PR target/111337
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index c4a935d5101..f60a0656d8f 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -29247,6 +29247,7 @@ output_macinfo (const char *debug_line_label, bool 
early_lto_debug)
        case DW_MACINFO_define:
        case DW_MACINFO_undef:
          if ((!dwarf_strict || dwarf_version >= 5)
+             && !dwarf_split_debug_info
              && HAVE_COMDAT_GROUP
              && vec_safe_length (files) != 1
              && i > 0
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index de0eadc31d7..3534e203a8a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2023-09-13  Omar Sandoval  <osan...@osandov.com>
+
+       PR debug/111409
+       * gcc.dg/pr111409.c: New test.
+
 2023-09-12  Juzhe-Zhong  <juzhe.zh...@rivai.ai>
 
        * lib/target-supports.exp: Enable vect_int for RVV.
diff --git a/gcc/testsuite/gcc.dg/pr111409.c b/gcc/testsuite/gcc.dg/pr111409.c
new file mode 100644
index 00000000000..1a79d81444e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr111409.c
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-skip-if "split DWARF unsupported" { *-*-darwin* } } */
+/* { dg-options "-gsplit-dwarf -g3 -dA" } */
+/* { dg-final { scan-assembler-times {.section\s+.debug_macro} 1 } } */
+/* { dg-final { scan-assembler-not {.byte\s+0x7\s*#\s*Import} } } */
+
+#define foo 1
-- 
2.41.0

Reply via email to