From b5afa20284b164fdfaf04801361748076a50a928 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Sun, 14 Oct 2012 18:24:32 +0000 Subject: [PATCH] re PR c++/53581 (Segmentation fault when enabling -std=c++0x on template code) 2012-10-14 Paolo Carlini PR c++/53581 * g++.dg/template/crash113.C: New. From-SVN: r192438 --- gcc/testsuite/ChangeLog | 5 +++ gcc/testsuite/g++.dg/template/crash113.C | 50 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 gcc/testsuite/g++.dg/template/crash113.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 79aee2f3d6e..f8b04d2d5dc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-10-14 Paolo Carlini + + PR c++/53581 + * g++.dg/template/crash113.C: New. + 2012-10-14 Jan Hubicka * gcc.dg/unroll_5.c: New testcase. diff --git a/gcc/testsuite/g++.dg/template/crash113.C b/gcc/testsuite/g++.dg/template/crash113.C new file mode 100644 index 00000000000..3d3a562bdcd --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash113.C @@ -0,0 +1,50 @@ +// PR c++/53581 + +template +class Child; + +template +class Base +{ +public: + Child operator-(const Base &m) const + { + Child diff; + return diff; + } + + A test() const + { + return 0; + } + +private: + A values[M * N]; +}; + +template +class Ops +{ +public: + virtual ~Ops() {} + + bool bar() const + { + Child mat; + return (*static_cast*>(this) - mat).test(); + } +}; + + +template +class Child : public Base, public Ops {}; + +class ImageWarp +{ + bool bar() const + { + return foo.bar(); + } + + Child foo; +};