// Submitted by Erik Rozendaal // Test case for GNATS bug 787. // { dg-do run } #include #include static int calls; int &foo (int &arg) { calls++; arg=0; return arg; } int &identity (int &x) { return x; } int main() { int a; calls = 0; int &b = ++foo (a); if (calls > 1) abort (); if (&a != &b) abort (); if (a != 1) abort (); calls = 0; int &c = ++identity (++foo (a)); if (calls > 1) abort (); if (&a != &c) abort (); if (a != 2) abort (); exit (0); }