diff options
author | Dodji Seketeli <dodji@redhat.com> | 2010-04-07 09:59:04 +0000 |
---|---|---|
committer | Dodji Seketeli <dodji@gcc.gnu.org> | 2010-04-07 11:59:04 +0200 |
commit | a42f12170922d13a8ecb5b0d9043c0b929bec957 (patch) | |
tree | 38901957496f5f16163832f1a0f51b2a39773cf7 /gcc | |
parent | b97b26342e59fa18468f1ae629b245630675ab4a (diff) | |
download | gcc-a42f12170922d13a8ecb5b0d9043c0b929bec957.zip gcc-a42f12170922d13a8ecb5b0d9043c0b929bec957.tar.gz gcc-a42f12170922d13a8ecb5b0d9043c0b929bec957.tar.bz2 |
re PR debug/43628 (in-class func-ptr type parameter has unspecified DW_AT_type)
Fix PR debug/43628
gcc/ChangeLog:
PR debug/43628
* dwarf2out.c (modified_type_die): Ignore artificial typedefs.
gcc/testsuite/ChangeLog:
PR debug/43628
* g++.dg/debug/dwarf2/typedef2.C: New test.
From-SVN: r158044
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C | 11 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a7773a1..34b0a26 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2010-04-07 Dodji Seketeli <dodji@redhat.com> + + PR debug/43628 + * dwarf2out.c (modified_type_die): Ignore artificial typedefs. + 2010-04-06 Kai Tietz <kai.tietz@onevision.com> * config/i386/i386.c (ix86_handle_cconv_attribute): Ignore diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 82b0d49..5fd0ec6 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -12146,7 +12146,8 @@ modified_type_die (tree type, int is_const_type, int is_volatile_type, name = qualified_type ? TYPE_NAME (qualified_type) : NULL; /* Handle C typedef types. */ - if (name && TREE_CODE (name) == TYPE_DECL && DECL_ORIGINAL_TYPE (name)) + if (name && TREE_CODE (name) == TYPE_DECL && DECL_ORIGINAL_TYPE (name) + && !DECL_ARTIFICIAL (name)) { tree dtype = TREE_TYPE (name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4aa4800..ce0a439 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-04-07 Dodji Seketeli <dodji@redhat.com> + + PR debug/43628 + * g++.dg/debug/dwarf2/typedef2.C: New test. + 2010-04-06 Dodji Seketeli <dodji@redhat.com> * g++.dg/debug/dwarf2/redeclaration-1.C: Moved from diff --git a/gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C b/gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C new file mode 100644 index 0000000..5bf0499 --- /dev/null +++ b/gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C @@ -0,0 +1,11 @@ +// Origin: PR debug/43628 +// { dg-options "-g -dA" } +// { dg-do compile } + +// { dg-final { scan-assembler-times "\[^\n\r\]*\\(DIE\[^\n\r\]*DW_TAG_formal_parameter\\)\[\n\r\]{1,2}\[^\n\r\]*DW_AT_type\[\n\r\]{1,2}" 1 } } +class C +{ + public: + typedef void (*t) (C); +}; +C::t f; |