// PR c++/98206
// { dg-do run }
// { dg-options "-fsanitize=alignment -std=c++11 -fno-sanitize-recover=alignment" }
template <typename Derived>
struct Base1
{
  char c1;
};
template <typename Derived>
struct Base2
{
  char c2;
  const Derived &get2 () const { return static_cast<const Derived &> (*this); }
};
struct X : public Base1<X>, public Base2<X>
{
  X (const char *d) : data{d} {}
  const char *data;
};
int
main ()
{
  X x = X{"cheesecake"};
  const char *p = x.get2 ().data;
  if (p[0] != 'c')
    __builtin_abort ();
}