diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2012-10-14 18:24:32 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2012-10-14 18:24:32 +0000 |
commit | b5afa20284b164fdfaf04801361748076a50a928 (patch) | |
tree | 453518527a712af8416de3cb25d6d73abe94c519 /gcc | |
parent | 6d96bad253abc02f9e93be5df49de74fb136c7a6 (diff) | |
download | gcc-b5afa20284b164fdfaf04801361748076a50a928.zip gcc-b5afa20284b164fdfaf04801361748076a50a928.tar.gz gcc-b5afa20284b164fdfaf04801361748076a50a928.tar.bz2 |
re PR c++/53581 (Segmentation fault when enabling -std=c++0x on template code)
2012-10-14 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53581
* g++.dg/template/crash113.C: New.
From-SVN: r192438
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/crash113.C | 50 |
2 files changed, 55 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 79aee2f..f8b04d2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2012-10-14 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/53581 + * g++.dg/template/crash113.C: New. + 2012-10-14 Jan Hubicka <jh@suse.cz> * 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 0000000..3d3a562 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/crash113.C @@ -0,0 +1,50 @@ +// PR c++/53581 + +template<class A, int M, int N> +class Child; + +template<class A, int M, int N> +class Base +{ +public: + Child<A, M, N> operator-(const Base<A, M, N> &m) const + { + Child<A, M, N> diff; + return diff; + } + + A test() const + { + return 0; + } + +private: + A values[M * N]; +}; + +template<class A, int N> +class Ops +{ +public: + virtual ~Ops() {} + + bool bar() const + { + Child<A, N, N> mat; + return (*static_cast<const Child<A, N, N>*>(this) - mat).test(); + } +}; + + +template<class A, int N> +class Child<A, N, N> : public Base<A, N, N>, public Ops<A, N> {}; + +class ImageWarp +{ + bool bar() const + { + return foo.bar(); + } + + Child<float, 3, 3> foo; +}; |