blob: dbdac1638c7fdd5203b0afcd69b5fda0421f4803 [file] [log] [blame]
// 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);
}