add alignment to enable store merging in strict-alignment targets
[official-gcc.git] / gcc / testsuite / g++.dg / pr97538.C
blobb29b1e40aa4e544559e3136275e739928003eae6
1 // { dg-do compile }
2 // { dg-options "-fno-guess-branch-probability -fno-tree-pta -O1" }
4 void *b, *c;
5 struct H {
6   virtual bool accept(const char *, unsigned long, int *, bool);
7 };
8 char accept_bt[1], accept_cd[1];
9 int accept_cb;
10 bool accept_cb_0;
11 class t : H {
12   bool accept(const char *, unsigned long bd, int *bg, bool) {
13     long bu = sizeof(int) + bd;
14     char *bw = bu > sizeof(accept_bt) ? new char : accept_bt,
15          *cf = bd ? new char : accept_cd;
16     __builtin___memcpy_chk(b, c, bd, 0);
17     if (bw != accept_bt)
18       delete bw;
19     bool ci = cj((int *)cf, bg), atran = bp && accept_cb_0;
20     atran &&ci &&cm(&accept_cb);
21     return ci;
22   }
23   bool cj(int *, int *);
24   bool cm(int *);
25   bool bp;
27 void bj() { new t; }