1e01aa904Sopenharmony_ci// Ensure that different pointer / reference types are considered genuinely
2e01aa904Sopenharmony_ci// different in --leaf-changes-only mode.
3e01aa904Sopenharmony_cistruct foo {
4e01aa904Sopenharmony_ci  long z;  // was int
5e01aa904Sopenharmony_ci};
6e01aa904Sopenharmony_ci
7e01aa904Sopenharmony_cistruct ops1 {
8e01aa904Sopenharmony_ci  int ** x;  // was *
9e01aa904Sopenharmony_ci};
10e01aa904Sopenharmony_ci
11e01aa904Sopenharmony_cistruct ops2 {
12e01aa904Sopenharmony_ci  // A change to foo's size (impacting y's size) is currently considered local
13e01aa904Sopenharmony_ci  // here.  Arguably this should be considered non-local as the change to foo is
14e01aa904Sopenharmony_ci  // also being reported independently.  If this happens, the test case will
15e01aa904Sopenharmony_ci  // need to be updated (to remove the reporting of the ops2 diff).
16e01aa904Sopenharmony_ci  foo y[10];
17e01aa904Sopenharmony_ci};
18e01aa904Sopenharmony_ci
19e01aa904Sopenharmony_cistruct ops3 {
20e01aa904Sopenharmony_ci  void (*spong)(int && wibble);  // was &
21e01aa904Sopenharmony_ci};
22e01aa904Sopenharmony_ci
23e01aa904Sopenharmony_cistruct ops4 {
24e01aa904Sopenharmony_ci  int & x;  // was *
25e01aa904Sopenharmony_ci};
26e01aa904Sopenharmony_ci
27e01aa904Sopenharmony_cistruct ops5 {
28e01aa904Sopenharmony_ci  int *** x;  // was *
29e01aa904Sopenharmony_ci};
30e01aa904Sopenharmony_ci
31e01aa904Sopenharmony_ci// TODO: This *should* be considered a local change, but currently is not.
32e01aa904Sopenharmony_ciint var6[5][2];  // was [2][5]
33e01aa904Sopenharmony_ci
34e01aa904Sopenharmony_civoid register_ops1(ops1*) { }
35e01aa904Sopenharmony_civoid register_ops2(ops2*) { }
36e01aa904Sopenharmony_civoid register_ops3(ops3*) { }
37e01aa904Sopenharmony_civoid register_ops4(ops4*) { }
38e01aa904Sopenharmony_civoid register_ops5(ops5*) { }
39