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