summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.law/mentor1.C
blob: 4011b16596037032ed7fe3f0f45f48d73f4a705c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// { dg-do assemble  }
// { dg-options "-O" }
// GROUPS passed mentor
struct Word {
   struct S1 *p1;
};
struct S1 {
   Word o;
   void shift_left(int delta, int ct);
};
inline void S1::shift_left(int delta, int ct)
{
   int cnt = ct;
   for (S1 *to_p = this, *from_p = to_p + delta; cnt--;) *to_p++ = *from_p++;
}

void dispose_t(S1 *tp, int from_index, int ct, const int d_last_t)
{
        int new_ct = d_last_t + 1 - ct;
        tp[0].o.p1[from_index].shift_left(ct, new_ct - from_index);
}