annotate gcc/testsuite/g++.dg/torture/pr78507.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 // PR middle-end/78507
kono
parents:
diff changeset
2 // { dg-do compile }
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 // { dg-additional-options "-Wno-return-type" }
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
4
111
kono
parents:
diff changeset
5 struct A {
kono
parents:
diff changeset
6 template <typename _Iterator1, typename _Iterator2>
kono
parents:
diff changeset
7 int operator()(_Iterator1, _Iterator2);
kono
parents:
diff changeset
8 };
kono
parents:
diff changeset
9 struct B {
kono
parents:
diff changeset
10 template <typename _BI1, typename _BI2>
kono
parents:
diff changeset
11 static _BI2 __copy_move_b(_BI1 p1, _BI2 p2) {
kono
parents:
diff changeset
12 _BI1 a;
kono
parents:
diff changeset
13 long b = p1 - a;
kono
parents:
diff changeset
14 for (; b > 0; --b)
kono
parents:
diff changeset
15 *--p2 = *--p1;
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17 };
kono
parents:
diff changeset
18 template <int, typename _BI1, typename _BI2>
kono
parents:
diff changeset
19 void __copy_move_backward_a(_BI1 p1, _BI2 p2) {
kono
parents:
diff changeset
20 B::__copy_move_b(p1, p2);
kono
parents:
diff changeset
21 }
kono
parents:
diff changeset
22 template <int, typename _BI1, typename _BI2>
kono
parents:
diff changeset
23 void __copy_move_backward_a2(_BI1 p1, _BI2 p2) {
kono
parents:
diff changeset
24 __copy_move_backward_a<0>(p1, p2);
kono
parents:
diff changeset
25 }
kono
parents:
diff changeset
26 template <typename _BI1, typename _BI2> void move_backward(_BI1 p1, _BI2 p2) {
kono
parents:
diff changeset
27 __copy_move_backward_a2<0>(p1, p2);
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29 template <typename _RandomAccessIterator, typename _Compare>
kono
parents:
diff changeset
30 void __insertion_sort(_RandomAccessIterator, _Compare p2) {
kono
parents:
diff changeset
31 for (_RandomAccessIterator c;; ++c)
kono
parents:
diff changeset
32 if (p2(0, 0))
kono
parents:
diff changeset
33 move_backward(c, c + 1);
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 template <typename _RandomAccessIterator, typename _Compare>
kono
parents:
diff changeset
36 void __final_insertion_sort(_RandomAccessIterator, _Compare p2) {
kono
parents:
diff changeset
37 _RandomAccessIterator d;
kono
parents:
diff changeset
38 __insertion_sort(d, p2);
kono
parents:
diff changeset
39 }
kono
parents:
diff changeset
40 template <typename _RandomAccessIterator, typename _Compare>
kono
parents:
diff changeset
41 void __sort(_RandomAccessIterator p1, _Compare p2) {
kono
parents:
diff changeset
42 __final_insertion_sort(p1, p2);
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44 template <typename _RandomAccessIterator, typename _Compare>
kono
parents:
diff changeset
45 void sort(_RandomAccessIterator, _RandomAccessIterator p2, _Compare) {
kono
parents:
diff changeset
46 A e;
kono
parents:
diff changeset
47 __sort(p2, e);
kono
parents:
diff changeset
48 }
kono
parents:
diff changeset
49 struct C {
kono
parents:
diff changeset
50 struct D {
kono
parents:
diff changeset
51 int DwarfRegNum;
kono
parents:
diff changeset
52 };
kono
parents:
diff changeset
53 int parseRegisterLiveOutMask() const;
kono
parents:
diff changeset
54 };
kono
parents:
diff changeset
55 int C::parseRegisterLiveOutMask() const {
kono
parents:
diff changeset
56 D f, g;
kono
parents:
diff changeset
57 sort(&f, &g, [] {});
kono
parents:
diff changeset
58 }
kono
parents:
diff changeset
59