The new C parser lost a call to mark_forward_parm_decls, thereby completely breaking the GNU extension of forward parameter declarations. I'm testing a patch. Testcases:
int f1(int a; int a); should be accepted (rather than complaining about a duplicate parameter name), int h1(int a; int b); should be rejected. Observations: 1. This is the first new C parser bug affecting valid code found since the parser went in in February. 2. It suggests that no-one is using this extension. 3. I'm surprised that mark_forward_parm_decls didn't get removed as an unused function after the call was lost. 4. The patch I'm testing restores things to the same functionality as in 4.0. There are various cases of invalid code involving this extension which 3.4 diagnoses and 4.0 doesn't; I'll file a separate bug for those. -- Summary: [4.1 Regression] parameter forward declarations broken Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: jsm28 at gcc dot gnu dot org ReportedBy: jsm28 at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23143