| // { dg-do run } |
| // GROUPS passed redeclaration |
| // Check that if multiple declarations of the same single |
| // function are present in different places in the same file, |
| // and if these declarations differ (as allowed) in the number |
| // of argument defaults provided, that correct values are |
| // passed at all call points anyway. |
| |
| extern "C" int printf (const char *, ...); |
| |
| void receiver (int ii, int jj); |
| |
| void sender_1 () |
| { |
| receiver (3,7); |
| } |
| |
| void receiver (int ii, int jj = 9); |
| |
| void sender_2 () |
| { |
| receiver (5); |
| } |
| |
| int ii_sum = 0; |
| int jj_sum = 0; |
| |
| void sender_3 (); |
| |
| int main () |
| { |
| sender_1 (); |
| sender_2 (); |
| sender_3 (); |
| if (ii_sum != 13 || jj_sum != 25) |
| { printf ("FAIL\n"); return 1; } |
| else |
| printf ("PASS\n"); |
| |
| return 0; |
| } |
| |
| void receiver (int ii, int jj) |
| { |
| ii_sum += ii; |
| jj_sum += jj; |
| } |
| |
| void sender_3 () |
| { |
| receiver (5); |
| } |