Fix test-suite fallout of default -Wreturn-type.
[official-gcc.git] / gcc / testsuite / g++.dg / ipa / pr78211.C
blob510fca573de6f68e77a415b854354a3d4dc24d5b
1 // PR lto/78211
2 // { dg-do compile { target { lto && c++11 } } }
3 // { dg-options "-fcompare-debug -fno-printf-return-value -flto -fno-use-linker-plugin -O3" }
4 // { dg-additional-options "-Wno-return-type" }
6 namespace std {
7   typedef __SIZE_TYPE__ size_t;
8   inline namespace __cxx11 { }
9   template<typename...> using __void_t = void;
10   template<class _E>
11   class initializer_list {
12     typedef size_t size_type;
13     typedef const _E* iterator;
14     iterator _M_array;
15     size_type _M_len;
16   };
18 extern "C++" {
19   namespace std {
20     template<typename _Tp> struct __is_char { enum { __value = 1 }; };
21   }
22   namespace __gnu_cxx {
23     template<bool, typename> struct __enable_if { };
24     template<typename _Tp> struct __enable_if<true, _Tp> { typedef _Tp __type; };
25   }
27 namespace std {
28   template<typename _Iterator, typename = __void_t<>> struct __iterator_traits { };
29   template<typename _Iterator> struct iterator_traits : public __iterator_traits<_Iterator> { };
30   template<typename _Tp> struct iterator_traits<_Tp*> { typedef _Tp& reference; };
32 namespace __gnu_cxx {
33   using std::iterator_traits;
34   template<typename _Iterator, typename _Container> class __normal_iterator {
35     typedef iterator_traits<_Iterator> __traits_type;
36    public:
37     typedef typename __traits_type::reference reference;
38     reference operator*() const noexcept { }
39   };
40   template<typename _IteratorL, typename _IteratorR, typename _Container>
41   inline bool operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept { return true; }
43 namespace std {
44   template<typename _CharT> struct char_traits;
45   template<typename> class allocator;
46   template<typename _Alloc> struct allocator_traits { };
47   template<typename _Tp> struct allocator_traits<allocator<_Tp>> {
48     using const_pointer = const _Tp*;
49     template<typename _Up> using rebind_alloc = allocator<_Up>;
50   };
52 namespace __gnu_cxx {
53   template<typename _Alloc>   struct __alloc_traits : std::allocator_traits<_Alloc>   {
54     typedef std::allocator_traits<_Alloc> _Base_type;
55     template<typename _Tp> struct rebind {
56       typedef typename _Base_type::template rebind_alloc<_Tp> other;
57     };
58   };
60 namespace std {
61   namespace __cxx11 {
62     template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string;
63     typedef basic_string<char> string;
64   }
65   template<typename _CharT> inline typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
66   operator==(const basic_string<_CharT>& __lhs, const basic_string<_CharT>& __rhs) noexcept { }
67   template<typename _Tp, typename _Alloc> struct _Vector_base {
68     typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type;
69   };
70   template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class vector {
71     typedef _Vector_base<_Tp, _Alloc> _Base;
72     typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
73     typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
74    public:
75     typedef typename _Alloc_traits::const_pointer const_pointer;
76     typedef __gnu_cxx::__normal_iterator<const_pointer, vector> const_iterator;
77     const_iterator end() const noexcept { }
78   };
80 class VwViewPlane;
81 class VwViewer {
82   std::vector<VwViewPlane*> mViewPlaneList;
83   VwViewPlane* FindViewPlane (const std::string& name);
84   const VwViewPlane* FindViewPlane (const std::string& name) const;
86 class VwAssimilatorStickyBox;
87 class VwViewer_2D final {
88   VwAssimilatorStickyBox* mp_stickyAssimilator;
89   void drawStickyBox();
90   void undrawStickyBox();
92 struct VwViewPlane {
93   const std::string& GetName() const { }
95 struct VwAssimilator_2D {
96   virtual int DrawNext() = 0;
98 class VwAssimilator_2D_Geometry : public VwAssimilator_2D { };
99 class VwAssimilatorStickyBox final : public VwAssimilator_2D_Geometry { };
100 VwViewPlane* VwViewer::FindViewPlane (const std::string& name) {
101   VwViewPlane* p_result = __null;
102   std::vector<VwViewPlane*>::const_iterator it;
103   while (it != mViewPlaneList.end()) {
104     if ((*it) -> GetName() == name ) break;
105   }
106   return p_result;
108 const VwViewPlane* VwViewer::FindViewPlane (const std::string& name) const {
109   VwViewPlane* p_result = __null;
110   std::vector<VwViewPlane*>::const_iterator it;
111   while (it != mViewPlaneList.end()) {
112     if ((*it) -> GetName() == name ) break;
113   }
114   return p_result;
116 void VwViewer_2D::drawStickyBox() {
117   mp_stickyAssimilator->DrawNext();
119 void VwViewer_2D::undrawStickyBox() {
120   mp_stickyAssimilator->DrawNext();