annotate gcc/testsuite/g++.dg/lto/pr68811_1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // { dg-options "-O2 -flto -w" }
kono
parents:
diff changeset
2 template <typename> class allocator;
kono
parents:
diff changeset
3 template <typename _CharT, typename = _CharT, typename = allocator<_CharT>>
kono
parents:
diff changeset
4 class Trans_NS___cxx11_basic_string;
kono
parents:
diff changeset
5 struct __false_type {};
kono
parents:
diff changeset
6 template <typename> using __void_t = void;
kono
parents:
diff changeset
7 template <typename, typename, template <typename...> class, typename...>
kono
parents:
diff changeset
8 struct __detector {
kono
parents:
diff changeset
9 using type = int;
kono
parents:
diff changeset
10 };
kono
parents:
diff changeset
11 template <typename _Default, template <typename...> class _Op,
kono
parents:
diff changeset
12 typename... _Args>
kono
parents:
diff changeset
13 struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> {
kono
parents:
diff changeset
14 using type = _Op<_Args...>;
kono
parents:
diff changeset
15 };
kono
parents:
diff changeset
16 template <typename _Default, template <typename...> class _Op,
kono
parents:
diff changeset
17 typename... _Args>
kono
parents:
diff changeset
18 using __detected_or = __detector<_Default, void, _Op, _Args...>;
kono
parents:
diff changeset
19 template <typename _Default, template <typename...> class _Op,
kono
parents:
diff changeset
20 typename... _Args>
kono
parents:
diff changeset
21 using __detected_or_t = typename __detected_or<_Default, _Op, _Args...>::type;
kono
parents:
diff changeset
22 template <template <typename...> class _Default,
kono
parents:
diff changeset
23 template <typename...> class _Op, typename... _Args>
kono
parents:
diff changeset
24 using __detected_or_t_ = __detected_or_t<_Default<_Args...>, _Op, _Args...>;
kono
parents:
diff changeset
25 struct random_access_iterator_tag {};
kono
parents:
diff changeset
26 class __undefined;
kono
parents:
diff changeset
27 template <typename, typename> using __replace_first_arg_t = __undefined;
kono
parents:
diff changeset
28 template <typename> class allocator {
kono
parents:
diff changeset
29 public:
kono
parents:
diff changeset
30 template <typename> struct rebind { typedef allocator other; };
kono
parents:
diff changeset
31 };
kono
parents:
diff changeset
32 struct __allocator_traits_base {
kono
parents:
diff changeset
33 template <typename _Alloc, typename _Up>
kono
parents:
diff changeset
34 using __rebind = typename _Alloc::template rebind<_Up>::other;
kono
parents:
diff changeset
35 template <typename _Tp> using __pointer = typename _Tp::pointer;
kono
parents:
diff changeset
36 template <typename _Tp> using __size_type = typename _Tp::size_type;
kono
parents:
diff changeset
37 };
kono
parents:
diff changeset
38 template <typename _Alloc, typename _Up>
kono
parents:
diff changeset
39 using __alloc_rebind =
kono
parents:
diff changeset
40 __detected_or_t_<__replace_first_arg_t, __allocator_traits_base::__rebind,
kono
parents:
diff changeset
41 _Alloc, _Up>;
kono
parents:
diff changeset
42 struct allocator_traits : __allocator_traits_base {
kono
parents:
diff changeset
43 using pointer = __detected_or_t<char, __pointer, allocator<char>>;
kono
parents:
diff changeset
44 using size_type = __detected_or_t<int, __size_type, allocator<char>>;
kono
parents:
diff changeset
45 template <typename _Tp>
kono
parents:
diff changeset
46 using rebind_alloc = __alloc_rebind<allocator<char>, _Tp>;
kono
parents:
diff changeset
47 };
kono
parents:
diff changeset
48 struct __alloc_traits : allocator_traits {
kono
parents:
diff changeset
49 struct rebind {
kono
parents:
diff changeset
50 typedef rebind_alloc<int> other;
kono
parents:
diff changeset
51 };
kono
parents:
diff changeset
52 };
kono
parents:
diff changeset
53 template <typename, typename, typename> class Trans_NS___cxx11_basic_string {
kono
parents:
diff changeset
54 public:
kono
parents:
diff changeset
55 struct _Alloc_hider : __alloc_traits::rebind::other {
kono
parents:
diff changeset
56 _Alloc_hider(__alloc_traits::pointer, allocator);
kono
parents:
diff changeset
57 } _M_dataplus;
kono
parents:
diff changeset
58 __alloc_traits::pointer _M_local_data();
kono
parents:
diff changeset
59 template <typename _InIterator>
kono
parents:
diff changeset
60 void _M_construct_aux(_InIterator __beg, _InIterator __end, __false_type) {
kono
parents:
diff changeset
61 _M_construct(__beg, __end, random_access_iterator_tag());
kono
parents:
diff changeset
62 }
kono
parents:
diff changeset
63 template <typename _InIterator>
kono
parents:
diff changeset
64 void _M_construct(_InIterator __beg, _InIterator __end) {
kono
parents:
diff changeset
65 _M_construct_aux(__beg, __end, __false_type());
kono
parents:
diff changeset
66 }
kono
parents:
diff changeset
67 template <typename _FwdIterator>
kono
parents:
diff changeset
68 void _M_construct(_FwdIterator, _FwdIterator, random_access_iterator_tag);
kono
parents:
diff changeset
69 char _S_copy___s2;
kono
parents:
diff changeset
70 void _S_copy(char *, __alloc_traits::size_type __n) {
kono
parents:
diff changeset
71 __builtin_memcpy(0, &_S_copy___s2, __n);
kono
parents:
diff changeset
72 }
kono
parents:
diff changeset
73 template <class _Iterator>
kono
parents:
diff changeset
74 void _S_copy_chars(char *__p, _Iterator __k1, _Iterator __k2) {
kono
parents:
diff changeset
75 _S_copy(__p, __k2 - __k1);
kono
parents:
diff changeset
76 }
kono
parents:
diff changeset
77 Trans_NS___cxx11_basic_string(char *__s,
kono
parents:
diff changeset
78 allocator<char> __a = allocator<char>())
kono
parents:
diff changeset
79 : _M_dataplus(_M_local_data(), __a) {
kono
parents:
diff changeset
80 _M_construct(__s, __s);
kono
parents:
diff changeset
81 }
kono
parents:
diff changeset
82 };
kono
parents:
diff changeset
83 template <typename _CharT, typename _Traits, typename _Alloc>
kono
parents:
diff changeset
84 template <typename _InIterator>
kono
parents:
diff changeset
85 void Trans_NS___cxx11_basic_string<_CharT, _Traits, _Alloc>::_M_construct(
kono
parents:
diff changeset
86 _InIterator __beg, _InIterator __end, random_access_iterator_tag) {
kono
parents:
diff changeset
87 _S_copy_chars(0, __beg, __end);
kono
parents:
diff changeset
88 }
kono
parents:
diff changeset
89 class Decimal {
kono
parents:
diff changeset
90 Trans_NS___cxx11_basic_string<char> toString() const;
kono
parents:
diff changeset
91 };
kono
parents:
diff changeset
92 Trans_NS___cxx11_basic_string<char> Decimal::toString() const {
kono
parents:
diff changeset
93 return "Infinity";
kono
parents:
diff changeset
94 }