https://gcc.gnu.org/g:319f1d042179b381becf4bf1d0f6b9dab6e84884

commit r15-7301-g319f1d042179b381becf4bf1d0f6b9dab6e84884
Author: Richard Biener <rguent...@suse.de>
Date:   Fri Jan 31 08:56:39 2025 +0100

    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.

Diff:
---
 gcc/dwarf2out.cc                         | 3 +--
 gcc/testsuite/gcc.target/i386/pr100530.c | 5 +++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc
index 8085b8d85d89..43884f206c07 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 000000000000..005c01991295
--- /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;

Reply via email to