diff options
author | Jan Hubicka <hubicka@gcc.gnu.org> | 2012-03-25 13:25:51 +0000 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2012-03-25 13:25:51 +0000 |
commit | e24e08d4e2c4d8f008bdf0dd7ed91449ba3f7787 (patch) | |
tree | 8802beca3d79d1cc3d733aaa05b6ccd8b1205e7b | |
parent | f4471acbe3a0e4aee9aa8144898c593ff4e7b595 (diff) | |
download | gcc-e24e08d4e2c4d8f008bdf0dd7ed91449ba3f7787.zip gcc-e24e08d4e2c4d8f008bdf0dd7ed91449ba3f7787.tar.gz gcc-e24e08d4e2c4d8f008bdf0dd7ed91449ba3f7787.tar.bz2 |
re PR tree-optimization/51737 (g++ crashes (internal compiler error: Segmentation fault) when compiling quickbook)
PR middle-end/51737
* g++.dg/torture/pr51737.C: New testcase
From-SVN: r185776
-rw-r--r-- | gcc/testsuite/g++.dg/torture/pr51737.C | 30 |
1 files changed, 30 insertions, 0 deletions
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 T> class intrusive_ptr { +public: + ~intrusive_ptr() { intrusive_ptr_release( px ); } + T * px; +}; +template <typename T> struct intrusive_base { + friend void intrusive_ptr_release(T* ptr) { delete ptr; } +}; +struct section_info; +struct file_info : intrusive_base<file_info> { + intrusive_ptr<file_info> parent; + intrusive_ptr<section_info> switched_section; +}; +struct section_info : intrusive_base<section_info> { + intrusive_ptr<section_info> parent; +}; +struct id_state { + void * start_file(void); +}; +void * id_state::start_file(void) { + intrusive_ptr<file_info> parent; +} +struct id_generation_data : intrusive_base<id_generation_data> { + void child_length() const {} +}; +void generate_id(id_generation_data& generation_data) +{ + generation_data.child_length(); +} |