aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2020-12-01 09:41:16 +0100
committerJakub Jelinek <jakub@redhat.com>2020-12-01 09:41:16 +0100
commita90606ab979762ce4630777c2fce5c921d0a2b96 (patch)
treef2253e5c4373b240d056f2c7084d9877505ecb73
parent934a54180541d27139aecbd19e7f50cb73552c7c (diff)
downloadgcc-a90606ab979762ce4630777c2fce5c921d0a2b96.zip
gcc-a90606ab979762ce4630777c2fce5c921d0a2b96.tar.gz
gcc-a90606ab979762ce4630777c2fce5c921d0a2b96.tar.bz2
c++, debug: Treat -std=c++20 -gdwarf-5 like C++14 rather than C++98
I have noticed that while we use DW_LANG_C_plus_plus_14 for -std=c++17 -gdwarf-5, we use DW_LANG_C_plus_plus (aka C++98) for -std=c++20 -gdwarf-5. The following patch makes those two match. 2020-12-01 Jakub Jelinek <jakub@redhat.com> * dwarf2out.c (gen_compile_unit_die): Treat GNU C++20 like C++14 for -gdwarf-5. * g++.dg/debug/dwarf2/lang-cpp17.C: New test. * g++.dg/debug/dwarf2/lang-cpp20.C: New test.
-rw-r--r--gcc/dwarf2out.c3
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C7
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C7
3 files changed, 16 insertions, 1 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index bfe2d63..0a0a7ea 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -24646,7 +24646,8 @@ gen_compile_unit_die (const char *filename)
language = DW_LANG_C_plus_plus_11;
else if (strcmp (language_string, "GNU C++14") == 0)
language = DW_LANG_C_plus_plus_14;
- else if (strcmp (language_string, "GNU C++17") == 0)
+ else if (strcmp (language_string, "GNU C++17") == 0
+ || strcmp (language_string, "GNU C++20") == 0)
/* For now. */
language = DW_LANG_C_plus_plus_14;
}
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
new file mode 100644
index 0000000..460294c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
@@ -0,0 +1,7 @@
+// { dg-do compile }
+// { dg-options "-O -std=c++17 -gdwarf-5 -dA" }
+// For -gdwarf-6 hopefully DW_LANG_C_plus_plus_17
+// DW_LANG_C_plus_plus_14 = 0x0021
+// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
+
+int version;
diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
new file mode 100644
index 0000000..abd7351
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
@@ -0,0 +1,7 @@
+// { dg-do compile }
+// { dg-options "-O -std=c++20 -gdwarf-5 -dA" }
+// For -gdwarf-6 hopefully DW_LANG_C_plus_plus_20
+// DW_LANG_C_plus_plus_14 = 0x0021
+// { dg-final { scan-assembler "0x21\[^\n\r]* DW_AT_language" } } */
+
+int version;