blob: ac8c893334e12c1b9b648dc2194c449852a37920 [file] [log] [blame]
// PR lto/78211
// { dg-do compile { target { lto && c++11 } } }
// { dg-options "-fcompare-debug -fno-printf-return-value -flto -fno-use-linker-plugin -O3 -Wno-return-type" }
namespace std {
typedef __SIZE_TYPE__ size_t;
inline namespace __cxx11 { }
template<typename...> using __void_t = void;
template<class _E>
class initializer_list {
typedef size_t size_type;
typedef const _E* iterator;
iterator _M_array;
size_type _M_len;
};
}
extern "C++" {
namespace std {
template<typename _Tp> struct __is_char { enum { __value = 1 }; };
}
namespace __gnu_cxx {
template<bool, typename> struct __enable_if { };
template<typename _Tp> struct __enable_if<true, _Tp> { typedef _Tp __type; };
}
}
namespace std {
template<typename _Iterator, typename = __void_t<>> struct __iterator_traits { };
template<typename _Iterator> struct iterator_traits : public __iterator_traits<_Iterator> { };
template<typename _Tp> struct iterator_traits<_Tp*> { typedef _Tp& reference; };
}
namespace __gnu_cxx {
using std::iterator_traits;
template<typename _Iterator, typename _Container> class __normal_iterator {
typedef iterator_traits<_Iterator> __traits_type;
public:
typedef typename __traits_type::reference reference;
reference operator*() const noexcept { }
};
template<typename _IteratorL, typename _IteratorR, typename _Container>
inline bool operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept { return true; }
}
namespace std {
template<typename _CharT> struct char_traits;
template<typename> class allocator;
template<typename _Alloc> struct allocator_traits { };
template<typename _Tp> struct allocator_traits<allocator<_Tp>> {
using const_pointer = const _Tp*;
template<typename _Up> using rebind_alloc = allocator<_Up>;
};
}
namespace __gnu_cxx {
template<typename _Alloc> struct __alloc_traits : std::allocator_traits<_Alloc> {
typedef std::allocator_traits<_Alloc> _Base_type;
template<typename _Tp> struct rebind {
typedef typename _Base_type::template rebind_alloc<_Tp> other;
};
};
}
namespace std {
namespace __cxx11 {
template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string;
typedef basic_string<char> string;
}
template<typename _CharT> inline typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
operator==(const basic_string<_CharT>& __lhs, const basic_string<_CharT>& __rhs) noexcept { }
template<typename _Tp, typename _Alloc> struct _Vector_base {
typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<_Tp>::other _Tp_alloc_type;
};
template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class vector {
typedef _Vector_base<_Tp, _Alloc> _Base;
typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
public:
typedef typename _Alloc_traits::const_pointer const_pointer;
typedef __gnu_cxx::__normal_iterator<const_pointer, vector> const_iterator;
const_iterator end() const noexcept { }
};
}
class VwViewPlane;
class VwViewer {
std::vector<VwViewPlane*> mViewPlaneList;
VwViewPlane* FindViewPlane (const std::string& name);
const VwViewPlane* FindViewPlane (const std::string& name) const;
};
class VwAssimilatorStickyBox;
class VwViewer_2D final {
VwAssimilatorStickyBox* mp_stickyAssimilator;
void drawStickyBox();
void undrawStickyBox();
};
struct VwViewPlane {
const std::string& GetName() const { }
};
struct VwAssimilator_2D {
virtual int DrawNext() = 0;
};
class VwAssimilator_2D_Geometry : public VwAssimilator_2D { };
class VwAssimilatorStickyBox final : public VwAssimilator_2D_Geometry { };
VwViewPlane* VwViewer::FindViewPlane (const std::string& name) {
VwViewPlane* p_result = __null;
std::vector<VwViewPlane*>::const_iterator it;
while (it != mViewPlaneList.end()) {
if ((*it) -> GetName() == name ) break;
}
return p_result;
}
const VwViewPlane* VwViewer::FindViewPlane (const std::string& name) const {
VwViewPlane* p_result = __null;
std::vector<VwViewPlane*>::const_iterator it;
while (it != mViewPlaneList.end()) {
if ((*it) -> GetName() == name ) break;
}
return p_result;
}
void VwViewer_2D::drawStickyBox() {
mp_stickyAssimilator->DrawNext();
}
void VwViewer_2D::undrawStickyBox() {
mp_stickyAssimilator->DrawNext();
}