This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
Re: debug/2813: Type of variable is wrong in dwarf2 debugging info
- To: nobody at gcc dot gnu dot org
- Subject: Re: debug/2813: Type of variable is wrong in dwarf2 debugging info
- From: Mark Kettenis <kettenis at science dot uva dot nl>
- Date: 14 May 2001 21:46:01 -0000
- Cc: gcc-prs at gcc dot gnu dot org,
- Reply-To: Mark Kettenis <kettenis at science dot uva dot nl>
The following reply was made to PR debug/2813; it has been noted by GNATS.
From: Mark Kettenis <kettenis@science.uva.nl>
To: gcc-gnats@gcc.gnu.org, gcc-bugs@gcc.gnu.org
Cc:
Subject: Re: debug/2813: Type of variable is wrong in dwarf2 debugging info
Date: Mon, 14 May 2001 23:19:33 +0200
>Description:
Compiling the attached test with -gdwarf-2 -dA, we find DW_AT_type
of variable lave points at the DW_TAG_const_type die constructed
for the argument cc, instead of pointing directly to the
DW_TAG_base_type that represents type char.
This is a regression from GCC 2.95.2.
This patch is the culprit:
2001-04-11 Mark Mitchell <mark@codesourcery.com>
* dwarf2out.c (modified_type_die): Don't create new types here.
* tree.h (get_qualified_type): New function.
(build_qualified_type): Adjust comment.
* tree.c (get_qualified_type): New function.
(build_qualified_type): Use it.
Basically, what's happening is that when creating a DIE for a
qualified type, the code attaches the newly created DIE to the
origional unqualified type:
equate_type_number_to_die (type, mod_type_die);
Thereafter the DIE for the qualified type will be used whenever an
unqualified type is seen.
I'm not sure how to solve this elegantly. Adding
if (qualified_type)
type = qualified_type
at the end of the
if (code != ERROR_MARK)
{
block should do the trick, but perhaps a more experienced GCC hacker
can come up with a better idea.
Hope this helps,
Mark