Regression in C prototype handling?
Richard Earnshaw
rearnsha@arm.com
Mon Feb 14 10:29:00 GMT 2000
>
> Gcc has recently started to reject the following code
>
> void foo (int (*cmp)(int *, int *));
>
> void foo (int (*cmp)())
> {
> }
>
> Is this intentional (it was accepted by 2.95.2, and probably as recently
> as last week). If so, then it breaks newlib's qsort() which has this type
> of declaration/definition combination.
>
Ok, I've dug a bit deeper and it turns out to be an ARM-specific
regression. The problem is that arm_comp_type_attributes returns false if
neither of the prototype and the function has any attributes. This causes
the type check comparison to fail. Looking at arm_comp_type_attributes, I
can't follow the intended logic of the comparison, but it is clearly
giving the wrong results in this case.
Richard.
More information about the Gcc-bugs
mailing list