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

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-lto-do link } */
kono
parents:
diff changeset
2 /* { dg-require-effective-target fpic } */
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
3 /* { dg-lto-options {{-fPIC -r -nostdlib -flto -O2 -g -Wno-return-type}} } */
111
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 void frexp (int, int *);
kono
parents:
diff changeset
6 namespace std
kono
parents:
diff changeset
7 {
kono
parents:
diff changeset
8 int ldexp (int, int);
kono
parents:
diff changeset
9 struct A
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 };
kono
parents:
diff changeset
12 template <class T> T get_min_shift_value ();
kono
parents:
diff changeset
13 template <class> struct min_shift_initializer
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 struct B
kono
parents:
diff changeset
16 {
kono
parents:
diff changeset
17 B () { get_min_shift_value<long double> (); }
kono
parents:
diff changeset
18 } static const b;
kono
parents:
diff changeset
19 static void
kono
parents:
diff changeset
20 m_fn1 ()
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 b;
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24 };
kono
parents:
diff changeset
25 template <class T>
kono
parents:
diff changeset
26 const typename min_shift_initializer<T>::B min_shift_initializer<T>::b;
kono
parents:
diff changeset
27 template <class T>
kono
parents:
diff changeset
28 inline T
kono
parents:
diff changeset
29 get_min_shift_value ()
kono
parents:
diff changeset
30 {
kono
parents:
diff changeset
31 using std::ldexp;
kono
parents:
diff changeset
32 static T c = ldexp (0, 0);
kono
parents:
diff changeset
33 min_shift_initializer<T>::m_fn1;
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 template <class T, class Policy>
kono
parents:
diff changeset
36 void
kono
parents:
diff changeset
37 float_next_imp (T p1, Policy p2)
kono
parents:
diff changeset
38 {
kono
parents:
diff changeset
39 using std::ldexp;
kono
parents:
diff changeset
40 int d;
kono
parents:
diff changeset
41 float_next (0, p2);
kono
parents:
diff changeset
42 frexp (p1, &d);
kono
parents:
diff changeset
43 }
kono
parents:
diff changeset
44 template <class T, class Policy>
kono
parents:
diff changeset
45 int
kono
parents:
diff changeset
46 float_next (const T &p1, Policy &p2)
kono
parents:
diff changeset
47 {
kono
parents:
diff changeset
48 float_next_imp (p1, p2);
kono
parents:
diff changeset
49 }
kono
parents:
diff changeset
50 template <class T, class Policy> void float_prior_imp (T, Policy)
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 get_min_shift_value<T> ();
kono
parents:
diff changeset
53 }
kono
parents:
diff changeset
54 template <class T, class Policy> int float_prior (T, Policy)
kono
parents:
diff changeset
55 {
kono
parents:
diff changeset
56 float_prior_imp (static_cast<T> (0), 0);
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58 template <class T, class U, class Policy>
kono
parents:
diff changeset
59 void
kono
parents:
diff changeset
60 nextafter (T p1, U p2, Policy p3)
kono
parents:
diff changeset
61 {
kono
parents:
diff changeset
62 p2 ? float_next (0, p3) : float_prior (p1, 0);
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64 long double e;
kono
parents:
diff changeset
65 int f;
kono
parents:
diff changeset
66 void
kono
parents:
diff changeset
67 nextafter ()
kono
parents:
diff changeset
68 {
kono
parents:
diff changeset
69 nextafter (e, f, A ());
kono
parents:
diff changeset
70 }
kono
parents:
diff changeset
71 }