aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2025-01-31 08:56:39 +0100
committerRichard Biener <rguenth@gcc.gnu.org>2025-01-31 11:50:59 +0100
commit319f1d042179b381becf4bf1d0f6b9dab6e84884 (patch)
tree919c4eda80bc516eddcdefd00505534e07245305 /gcc
parent85e1714b0606579a339c234510063e057fe662af (diff)
downloadgcc-319f1d042179b381becf4bf1d0f6b9dab6e84884.zip
gcc-319f1d042179b381becf4bf1d0f6b9dab6e84884.tar.gz
gcc-319f1d042179b381becf4bf1d0f6b9dab6e84884.tar.bz2
debug/100530 - Revert QUAL_ADDR_SPACE handling from dwarf2out.cc
The bug clearly shows that r8-4385-ga297ccb52e0c89 was wrong in enabling handling of address-space qualification as DWARF type qualifiers as the code isn't prepared to it actually be not handled and ends up changing a lesser qualified (without address-space) type DIE in ways tripping asserts. The following reverts that part which then causes the DIE for the same type with address-space qualifiers removed to be re-used since there's currently no code to encode address-spaces within dwarf2out.cc or in the DWARF spec. r8-4385-ga297ccb52e0c89 did not come with a testcase nor a good description of the bug fixed - I've verified const qualification mixed with address-spaces creates the expected DWARF. PR debug/100530 * dwarf2out.cc (modified_type_die): Do not claim we handle address-space qualification with dwarf_qual_info[]. * gcc.target/i386/pr100530.c: New testcase.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/dwarf2out.cc3
-rw-r--r--gcc/testsuite/gcc.target/i386/pr100530.c5
2 files changed, 6 insertions, 2 deletions
diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index 8085b8d..43884f2 100644
--- a/gcc/dwarf2out.cc
+++ b/gcc/dwarf2out.cc
@@ -13678,8 +13678,7 @@ modified_type_die (tree type, int cv_quals, bool reverse,
struct array_descr_info info;
/* Only these cv-qualifiers are currently handled. */
const int cv_qual_mask = (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE
- | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC |
- ENCODE_QUAL_ADDR_SPACE(~0U));
+ | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC);
/* DW_AT_endianity is specified only for base types in the standard. */
const bool reverse_type
= need_endianity_attribute_p (reverse)
diff --git a/gcc/testsuite/gcc.target/i386/pr100530.c b/gcc/testsuite/gcc.target/i386/pr100530.c
new file mode 100644
index 0000000..005c019
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr100530.c
@@ -0,0 +1,5 @@
+/* { dg-do compile } */
+/* { dg-options "-g" } */
+
+__seg_gs const int var;
+__seg_gs int foo;