Viewing file: pr100254.C (3.42 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR rtl-optimization/100254 // { dg-do compile } // { dg-options "-O2 -fno-guess-branch-probability -fipa-pta -fnon-call-exceptions -fcompare-debug" } // { dg-additional-options "-mtune=goldmont" { target i?86-*-* x86_64-*-* } }
struct _Rb_tree_node_base { typedef _Rb_tree_node_base *_Base_ptr; typedef _Rb_tree_node_base *_Const_Base_ptr; _Base_ptr _M_left; }; template <typename _Key_compare> struct _Rb_tree_key_compare { _Key_compare _M_key_compare; }; struct _Rb_tree_header { _Rb_tree_node_base _M_header; }; struct _Rb_tree_iterator { _Rb_tree_iterator(_Rb_tree_node_base::_Base_ptr); friend bool operator==(_Rb_tree_iterator, _Rb_tree_iterator); }; template <typename _Tp> struct _Rb_tree_const_iterator { typedef _Rb_tree_const_iterator _Self; _Rb_tree_const_iterator(_Rb_tree_node_base::_Const_Base_ptr) {} _Tp operator*(); template <typename _Up> friend bool operator!=(_Rb_tree_const_iterator<_Up>, _Rb_tree_const_iterator<_Up>); }; template <typename _Key, typename _Val, typename _Compare> struct _Rb_tree { template <typename _Key_compare> struct _Rb_tree_impl : _Rb_tree_key_compare<_Key_compare>, _Rb_tree_header {}; _Rb_tree_impl<_Compare> _M_impl; _Key _S_key(); typedef _Rb_tree_const_iterator<_Val> const_iterator; const_iterator begin() { return _M_impl._M_header._M_left; } _Rb_tree_iterator find(const _Key &); }; template <typename _Key, typename _Val, typename _Compare> _Rb_tree_iterator _Rb_tree<_Key, _Val, _Compare>::find(const _Key &__k) { _Rb_tree_iterator __j = 0; return __j == 0 || _M_impl._M_key_compare(__k, _S_key()) ? 0 : __j; } template <typename _Key, typename _Compare = _Key> struct set { typedef _Key key_type; typedef _Rb_tree<key_type, _Key, _Compare> _Rep_type; _Rep_type _M_t; typedef typename _Rep_type::const_iterator iterator; iterator begin() { return _M_t.begin(); } iterator end(); void find(key_type __x) { _M_t.find(__x); } }; struct WindowDesc { WindowDesc(short); } _station_view_desc(0); struct Window { void IsWidgetLowered(); virtual void OnClick(int, int, int); }; int AllocateWindowDescFront_window_number; template <typename Wcls> void AllocateWindowDescFront(WindowDesc *desc, bool) { Wcls(desc, AllocateWindowDescFront_window_number); } class CargoDataEntry; struct CargoSorter { bool operator()(const CargoDataEntry *, const CargoDataEntry *) const; }; struct CargoDataEntry { ~CargoDataEntry(); char Retrieve_cargo; void Retrieve() { CargoDataEntry t(Retrieve_cargo); children->find(&t); } CargoDataEntry(char); set<CargoDataEntry *, CargoSorter> *children; }; CargoDataEntry::CargoDataEntry(char) : children() {} CargoDataEntry::~CargoDataEntry() { if (children) for (set<CargoDataEntry *>::iterator i = children->begin(); i != children->end();) delete *i; } bool CargoSorter::operator()(const CargoDataEntry *, const CargoDataEntry *) const { return false; } struct StationViewWindow : Window { StationViewWindow(WindowDesc *, int); CargoDataEntry HandleCargoWaitingClick_filter; void OnClick(int, int widget, int) { switch (widget) { case 0: HandleCargoWaitingClick_filter.Retrieve(); HandleCargoWaitingClick_filter.Retrieve(); case 1: IsWidgetLowered(); } } }; void ShowStationViewWindow_station() { AllocateWindowDescFront<StationViewWindow>(&_station_view_desc, ShowStationViewWindow_station); }
|