On Tue, 2005-06-07 at 16:08, Jani Monoses wrote: > Hello > > trying to compile the following simple source file using arm-elf-gcc 4.0 > > void pig(void) __attribute__ ((long_call)); > void pig(void) > { > } > > yields: > > error: conflicting types for 'pig' > error: previous declaration of 'pig' was here >
Yes, that's the way it's currently coded. The problem, it seems to me, is that we want to fault: void pig(void) __attribute__ ((long_call)); ... void pig(void); and void pig(void); ... void pig(void) __attribute__((long_call)); both of which would be potentially problematical (which do we believe?) from the case that you have. AFAICT there is nothing on the types passed into the back-end to distinguish a declaration from a definition in this context. > The same with gcc3.3. With other function attributes (isr, section, naked > etc.) it works fine. > Looking at the code suggests isr should be strictly enforced too. R.