aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDodji Seketeli <dodji@redhat.com>2010-04-07 09:59:04 +0000
committerDodji Seketeli <dodji@gcc.gnu.org>2010-04-07 11:59:04 +0200
commita42f12170922d13a8ecb5b0d9043c0b929bec957 (patch)
tree38901957496f5f16163832f1a0f51b2a39773cf7 /gcc
parentb97b26342e59fa18468f1ae629b245630675ab4a (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/dwarf2out.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/debug/dwarf2/typedef2.C11
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;