[Bug debug/63300] 'const volatile' sometimes stripped in debug info
krebbel at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 19 16:20:00 GMT 2014
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.
More information about the Gcc-bugs
mailing list