aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2021-05-11 17:55:18 +0200
committerBernd Edlinger <bernd.edlinger@hotmail.de>2021-05-12 10:54:08 +0200
commit1ecd1e6c894fbdbc10fdcfee419922b24e1115ee (patch)
tree1da6e33303882d9969f10ed1ebe404561905a17c /gcc
parentdd39327854de1d18110fada5f8a7a4630da6d144 (diff)
downloadgcc-1ecd1e6c894fbdbc10fdcfee419922b24e1115ee.zip
gcc-1ecd1e6c894fbdbc10fdcfee419922b24e1115ee.tar.gz
gcc-1ecd1e6c894fbdbc10fdcfee419922b24e1115ee.tar.bz2
Fix ICE in output_rnglists, at dwarf2out.c:12294
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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/dwarf2out.c1
-rw-r--r--gcc/testsuite/gcc.dg/debug/dwarf2/pr100515.c19
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 8fc8298..b99598e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -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
index 0000000..7c72fcd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/dwarf2/pr100515.c
@@ -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++)
+ ;
+}