From db0f1dac653cb66691453ec5d01677ba2175993d Mon Sep 17 00:00:00 2001 From: hubicka Date: Sun, 25 Mar 2012 13:25:51 +0000 Subject: [PATCH] PR middle-end/51737 * g++.dg/torture/pr51737.C: New testcase git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185776 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/g++.dg/torture/pr51737.C | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 gcc/testsuite/g++.dg/torture/pr51737.C diff --git a/gcc/testsuite/g++.dg/torture/pr51737.C b/gcc/testsuite/g++.dg/torture/pr51737.C new file mode 100644 index 0000000..ff77edb --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr51737.C @@ -0,0 +1,30 @@ +// { dg-do compile } +template class intrusive_ptr { +public: + ~intrusive_ptr() { intrusive_ptr_release( px ); } + T * px; +}; +template struct intrusive_base { + friend void intrusive_ptr_release(T* ptr) { delete ptr; } +}; +struct section_info; +struct file_info : intrusive_base { + intrusive_ptr parent; + intrusive_ptr switched_section; +}; +struct section_info : intrusive_base { + intrusive_ptr parent; +}; +struct id_state { + void * start_file(void); +}; +void * id_state::start_file(void) { + intrusive_ptr parent; +} +struct id_generation_data : intrusive_base { + void child_length() const {} +}; +void generate_id(id_generation_data& generation_data) +{ + generation_data.child_length(); +} -- 2.7.4