add alignment to enable store merging in strict-alignment targets
[official-gcc.git] / gcc / testsuite / g++.dg / pr91173.C
blobb8fb41ba0cdce7076dde298f24ef756327106c54
1 class a {
2   int b;
3   void *c;
5 public:
6   bool aa();
7   int &ab() {
8     if (aa()) {
9       void *d(c);
10       return static_cast<int *>(d)[b];
11     }
12     return *(int *)0;
13   }
15 typedef enum {E} e;
16 class f : public a {
17   int g;
19 public:
20   int ac() {
21     if (g)
22       return 1;
23     return ac();
24   }
26 int *ad;
27 struct h {
28   static int ae(e, int *m) {
29     f ag;
30     int *ah;
31     while (!0) {
32       ad = &ag.ab();
33       ah = ad + ag.ac();
34       while (ad < ah)
35         *m = *ad++;
36     }
37   }
39 template <class, class>
40 void i(int *, int *, int, int *, e n, int *o) {
41   h::ae(n, o);
43 int aq, ar, as, at, au;
44 void aw() { i<int, bool>(&aq, &ar, as, &at, (e)0, &au); }