Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/g++.dg/torture/pr67055.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/g++.dg/torture/pr67055.C Fri Oct 27 22:46:09 2017 +0900 @@ -0,0 +1,44 @@ +// { dg-do compile } +// { dg-additional-options "-std=c++14" } + +namespace std { + typedef __SIZE_TYPE__ size_t; + struct nothrow_t; +} +namespace vespamalloc { + void fn1(void *); + template <typename> class A { + public: + static unsigned long fillStack(unsigned long); + }; + template <typename StackRep> + unsigned long A<StackRep>::fillStack(unsigned long p1) { + void *retAddr[p1]; + fn1(retAddr); + } + class B { + protected: + B(void *); + }; + template <int StackTraceLen> class D : B { + public: + D() : B(0) {} + void alloc(int) { A<int>::fillStack(StackTraceLen); } + }; + template <typename, typename> class C { + public: + void *malloc(unsigned long); + }; + template <typename MemBlockPtrT, typename ThreadListT> + void *C<MemBlockPtrT, ThreadListT>::malloc(unsigned long) { + MemBlockPtrT mem; + mem.alloc(0); + } + C<D<16>, int> *_GmemP; +} +void *operator new(std::size_t, std::nothrow_t &) noexcept { + return vespamalloc::_GmemP->malloc(0); +} +void *operator new[](std::size_t, std::nothrow_t &) noexcept { + return vespamalloc::_GmemP->malloc(0); +}