blob: d0bf7216ffc5325ccbe2eac8e4401bff9f1b20dc [file] [log] [blame]
// { dg-do compile }
// { dg-additional-options "-fcompare-debug" }
template <int> struct __conditional;
template <bool _Cond, typename, typename>
using __conditional_t = typename __conditional<_Cond>::type;
template <typename> struct __is_void_helper {};
template <typename _Tp> _Tp *__addressof(_Tp &__r) {
return __builtin_addressof(__r);
}
template <typename _Tp> _Tp *addressof(_Tp &__r) { return __addressof(__r); }
template <typename _Tp>
using __make_not_void = __conditional_t<_Tp ::value, int, _Tp>;
template <typename> struct pointer_traits;
template <typename _Tp> struct pointer_traits<_Tp *> {
typedef _Tp *pointer;
typedef _Tp element_type;
static pointer pointer_to(element_type &__r) { return addressof(__r); }
};
namespace {
template <typename> struct new_allocator;
}
template <typename> struct allocator_traits;
template <typename> struct allocator;
template <typename _Tp> struct allocator_traits<allocator<_Tp>> {
using pointer = _Tp *;
using const_pointer = _Tp *;
};
namespace __gnu_cxx {
template <typename = char>
struct __alloc_traits : allocator_traits<allocator<char>> {};
} // namespace __gnu_cxx
template <class> struct char_traits;
template <typename _CharT, typename = _CharT>
class Trans_NS___cxx11_basic_string;
template <> struct char_traits<char> {
typedef char char_type;
static void assign(char_type, char_type);
};
template <typename, typename> struct Trans_NS___cxx11_basic_string {
typedef __gnu_cxx::__alloc_traits<> _Alloc_traits;
typedef char_traits<char> traits_type;
typedef _Alloc_traits::pointer pointer;
typedef _Alloc_traits::const_pointer const_pointer;
struct {
pointer _M_p;
} _M_dataplus;
char _M_local_buf[];
void _M_data(pointer __p) { _M_dataplus._M_p = __p; }
bool _M_is_local() {
const_pointer __trans_tmp_5 =
pointer_traits<const_pointer>::pointer_to(*_M_local_buf);
return _M_dataplus._M_p == __trans_tmp_5;
}
void operator=(Trans_NS___cxx11_basic_string __str) {
bool __trans_tmp_2;
if (__str._M_is_local()) {
Trans_NS___cxx11_basic_string *__trans_tmp_1;
if (__builtin_expect(__trans_tmp_1 != this, true))
size();
} else if (__trans_tmp_2)
__str._M_data(__str._M_local_buf);
__str.clear();
}
void size();
void clear() { traits_type::assign(_M_dataplus._M_p[0], char()); }
};
template <class, typename, int> struct Pool {
template <class T> struct PoolIterator {
bool operator!=(PoolIterator);
T *operator*();
void operator++();
};
template <class T> struct IterateWrapper {
PoolIterator<T> begin();
PoolIterator<T> end();
};
};
struct BaseConsist {
Trans_NS___cxx11_basic_string<char> name;
};
struct Vehicle : BaseConsist {};
Pool<int, int, true>::IterateWrapper<Vehicle> __trans_tmp_4;
Trans_NS___cxx11_basic_string<char> __trans_tmp_6;
void FixOldVehicles() {
for (Vehicle *v : __trans_tmp_4)
v->name = __trans_tmp_6;
}