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