Fix ICE in output_rnglists, at dwarf2out.c:12294
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Tue, 11 May 2021 15:55:18 +0000 (17:55 +0200)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Wed, 12 May 2021 08:54:08 +0000 (10:54 +0200)
In this testcase the compile unit consists of a single
text section with a single embedded DECL_IGNORED_P function.
So we have a kind of multi-range text section here.
To avoid an ICE in output_rnglists we need to make sure
that have_multiple_function_sections is set to true.
This is a regression from
e69ac020372 ("Add line debug info for virtual thunks")

2021-05-12  Bernd Edlinger  <bernd.edlinger@hotmail.de>

PR debug/100515
* dwarf2out.c (dwarf2out_finish): Set
have_multiple_function_sections with multi-range text_section.

* gcc.dg/debug/dwarf2/pr100515.c: New testcase.

gcc/dwarf2out.c
gcc/testsuite/gcc.dg/debug/dwarf2/pr100515.c [new file with mode: 0644]

index 8fc8298..b99598e 100644 (file)
@@ -31956,6 +31956,7 @@ dwarf2out_finish (const char *filename)
             add_AT_addr (main_comp_unit_die, DW_AT_entry_pc, const0_rtx, true);
 
          add_ranges (NULL);
+         have_multiple_function_sections = true;
        }
     }
 
diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/pr100515.c b/gcc/testsuite/gcc.dg/debug/dwarf2/pr100515.c
new file mode 100644 (file)
index 0000000..7c72fcd
--- /dev/null
@@ -0,0 +1,19 @@
+/* PR debug/100515 */
+/* { dg-do compile } */
+/* { dg-options "-g -O2 -fopenmp" } */
+
+void
+foo (int x)
+{
+#pragma omp taskloop
+  for (int i = 0; i < x; i++)
+    ;
+}
+
+void
+bar (int x)
+{
+#pragma omp taskloop
+  for (int i = 0; i < x; i++)
+    ;
+}