2010-06-16 Mikael Pettersson <mikpe@it.uu.se>
[official-gcc.git] / gcc / testsuite / g++.dg / lto / 20091002-1_0.C
blob050211ac355864fa3fa14ee9ef1d68dbe38b9a0c
1 // { dg-lto-do link }
2 // { dg-lto-options {{-fPIC -flto}} }
3 // { dg-extra-ld-options "-fPIC -r -nostdlib" }
5 namespace std __attribute__ ((__visibility__ ("default")))
7   template<class _CharT>     struct char_traits;
8   template<typename _CharT, typename _Traits = char_traits<_CharT> >
9       class basic_ostream;
10   template<typename _CharT, typename _Traits = char_traits<_CharT> >
11       class istreambuf_iterator;
12   typedef basic_ostream<char> ostream;
13   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
14       class num_get;
15   class locale   {
16       class facet;
17   };
18   class locale::facet   {
19   };
20   enum _Ios_Iostate { _S_beg = 0, _S_cur = 1, _S_end = 2,
21       _S_ios_seekdir_end = 1L << 16     };
22   class ios_base   {
23   public:
24       typedef _Ios_Iostate iostate;
25   };
26   template<typename _CharT, typename _InIter>
27       class num_get : public locale::facet     {
28           typedef _InIter iter_type;
29           template<typename _ValueT> iter_type
30               _M_extract_int(iter_type, iter_type, ios_base&,
31                              ios_base::iostate&, _ValueT&) const;
32           virtual iter_type
33               do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
34       };
35   extern template class num_get<char>;
36   template<typename _CharT, typename _Traits>
37       class basic_ios : public ios_base     {
38           typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
39               __num_get_type;
40           const __num_get_type* _M_num_get;
41       };
42   template<typename _CharT, typename _Traits>
43       class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {
44       public:
45           typedef basic_ostream<_CharT, _Traits> __ostream_type;
46           __ostream_type&       operator<<(double __f)       { }
47       };
48   typedef double Real;
49   class Vector {
50   public:
51       Real operator[](int n) const    { }
52   };
53   std::ostream& operator<<(std::ostream& s, const Vector& vec)
54     {
55       int i;
56       s << vec[i] << ')';
57     }