https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66468

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-06-09
     Ever confirmed|0                           |1

--- Comment #4 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Yeah. It is also easily fixed:


markus@x4 testc % cat 1.ii
namespace std
{
template <typename> class allocator;
template <typename _Tp, typename = allocator<_Tp> > class vector
{
public:
  ~vector () {}
};
vector<unsigned> b;
}

template <typename _Tp> class A
{
public:
  typedef _Tp reference;
};

template <typename _Tp, typename _Alloc = A<_Tp> > class B
{
public:
  typename _Alloc::reference operator[](int);
};

namespace MosesTuning
{
class Point
{
};
class Optimizer
{
public:
  float Run (Point &) const;
};
}
using namespace MosesTuning;
class C
{
public:
  C (Point) { m_optimizer.Run (m_point); }
  Optimizer m_optimizer;
  Point m_point;
};

main ()
{
  B<Point> a;
  (C (a[0]));
}

markus@x4 testc % cat 2.ii
namespace std
{
template <typename> class allocator;
struct _Vector_base
{
  ~_Vector_base ();
};
template <typename _Tp, typename = allocator<_Tp> > class vector : _Vector_base
{
};
}

namespace MosesTuning
{
class Point;
class Optimizer
{
  float Run (Point &) const;
};
}
using namespace std;
namespace MosesTuning
{
float
Optimizer::Run (Point &) const
{
  vector<unsigned> a;
}
}

markus@x4 testc % /var/tmp/gcc_test/usr/local/bin/g++ -r -nostdlib 1.ii 2.ii -g
-O2 -flto
2.ii: In member function ‘__base_dtor ’:
2.ii:28:1: internal compiler error: in check_die, at dwarf2out.c:5712

Reply via email to