https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63300

Andreas Krebbel <krebbel at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-09-19
                 CC|                            |mark at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
Reghunt indicates that this is caused by r214143.

For a const volatile type none of the following IFs is triggered:

  if ((cv_quals & TYPE_QUAL_CONST)
      /* If there are multiple type modifiers, prefer a path which
     leads to a qualified type.  */
      && (((cv_quals & ~TYPE_QUAL_CONST) == TYPE_UNQUALIFIED)
      || get_qualified_type (type, cv_quals) == NULL_TREE
      || (get_qualified_type (type, cv_quals & ~TYPE_QUAL_CONST)
          != NULL_TREE)))
    {
      mod_type_die = new_die (DW_TAG_const_type, mod_scope, type);
      sub_die = modified_type_die (type, cv_quals & ~TYPE_QUAL_CONST,
                   context_die);
    }
  else if ((cv_quals & TYPE_QUAL_VOLATILE)
       && (((cv_quals & ~TYPE_QUAL_VOLATILE) == TYPE_UNQUALIFIED)
           || get_qualified_type (type, cv_quals) == NULL_TREE
           || (get_qualified_type (type, cv_quals & ~TYPE_QUAL_VOLATILE)
           != NULL_TREE)))
    {
      mod_type_die = new_die (DW_TAG_volatile_type, mod_scope, type);
      sub_die = modified_type_die (type, cv_quals & ~TYPE_QUAL_VOLATILE,
                   context_die);
    }
  else if (cv_quals & TYPE_QUAL_RESTRICT)
    {
      mod_type_die = new_die (DW_TAG_restrict_type, mod_scope, type);
      sub_die = modified_type_die (type, cv_quals & ~TYPE_QUAL_RESTRICT,
                   context_die);
    }

So the DIE ends up with an unqualified type.

Reply via email to