Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/ubsan/pr68259.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR middle-end/68259 // { dg-do compile } // { dg-options "-fsanitize=undefined -w" } namespace std { template < typename _Tp > class allocator { }; template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class vector { public: typedef _Tp value_type; void push_back (const value_type & __x) { } }; } class Foo; class FooBar { public: Foo * primitive_context; FooBar () { } FooBar (const FooBar & pnhp); }; template < class KEY, class CONTENT > class AVLTreeNode { }; template < class KEY, class CONTENT > class FooTree final { FooBar insertPrimitive (); public: AVLTreeNode < KEY, CONTENT > *seek_no_lock (const KEY & key) { } void primitive_patterns ( std::vector < FooBar > &patterns); }; template < class KEY, class CONTENT > void FooTree < KEY, CONTENT >::primitive_patterns ( std::vector <FooBar > &patterns) { patterns.push_back (insertPrimitive()); } template < class KEY, class CONTENT > FooBar FooTree < KEY, CONTENT >::insertPrimitive () { FooBar place; seek_no_lock (place.primitive_context); return place; } class ManuverResults { }; class opc_info_t { public: FooTree < Foo *, ManuverResults > *primitivecache; }; static void do_optical_prox_corr_tsafe (opc_info_t * opc_info) { std::vector < FooBar > patterns; opc_info->primitivecache->primitive_patterns (patterns); }