Commit 095c7b3c by Jakub Jelinek Committed by Jakub Jelinek

re PR debug/43190 (Used pointer typedefs eliminated from debug info)

	PR debug/43190
	* function.c (used_types_insert): Don't skip through named pointer
	types.  Don't use TYPE_MAIN_VARIANT if the original type has a name
	and it is different from the main variant's type.

	* c-c++-common/dwarf2/pr43190.c: New test.

From-SVN: r157092
parent a1e205cf
2010-02-26 Jakub Jelinek <jakub@redhat.com>
PR debug/43190
* function.c (used_types_insert): Don't skip through named pointer
types. Don't use TYPE_MAIN_VARIANT if the original type has a name
and it is different from the main variant's type.
2010-02-26 Nick Clifton <nickc@redhat.com>
* config/rx/rx.md (sminsi3): Remove bogus alternative.
......
/* Expands front end tree to back end RTL for GCC.
Copyright (C) 1987, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010 Free Software Foundation, Inc.
This file is part of GCC.
......@@ -5469,8 +5469,13 @@ void
used_types_insert (tree t)
{
while (POINTER_TYPE_P (t) || TREE_CODE (t) == ARRAY_TYPE)
t = TREE_TYPE (t);
t = TYPE_MAIN_VARIANT (t);
if (TYPE_NAME (t))
break;
else
t = TREE_TYPE (t);
if (TYPE_NAME (t) == NULL_TREE
|| TYPE_NAME (t) == TYPE_NAME (TYPE_MAIN_VARIANT (t)))
t = TYPE_MAIN_VARIANT (t);
if (debug_info_level > DINFO_LEVEL_NONE)
{
if (cfun)
......
2010-02-26 Jakub Jelinek <jakub@redhat.com>
PR debug/43190
* c-c++-common/dwarf2/pr43190.c: New test.
2010-02-26 H.J. Lu <hongjiu.lu@intel.com>
PR testsuite/37074:
......
/* PR debug/43190 */
/* { dg-options "-gdwarf-2 -dA" } */
/* { dg-final { scan-assembler "DW_TAG_structure_type\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"S\[^\\r\\n\]*DW_AT_name" } } */
/* { dg-final { scan-assembler "DW_TAG_typedef\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\"T\[^\\r\\n\]*DW_AT_name" } } */
typedef struct S { int i; } *T;
#define M(p) ((T) (p))
void
foo (void *p)
{
M (p)->i++;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment