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

Reply via email to