summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/ubsan/align-4.C
blob: 42c091b92cf93efdc06c8cbb24d6771a1b1eecbb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 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 ();
}