When I compile this code:

 cat main.c
#include <string.h>

typedef struct uip_eth_addr {
  unsigned char addr[6];
} uip_eth_addr;

extern struct uip_eth_addr uip_ethaddr;

void main (void)
{
}

user@instant-contiki:~/sdcc_bug3$ sdcc main.c

main.c:7: syntax error: token -> 'uip_eth_addr' ; column 26


If I simply rename the typedef then it compiles fine:

user@instant-contiki:~/sdcc_bug3$ !cat
cat main.c
#include <string.h>

typedef struct uip_eth_addr {
  unsigned char addr[6];
} uip_eth_addr_t;

extern struct uip_eth_addr uip_ethaddr;

void main (void)
{
}
user@instant-contiki:~/sdcc_bug3$ !sd
sdcc main.c


No syntax error!

Both versions compile with GCC.

so is this:

1) a limitation of sdcc
2) a bug in sdcc
3) a non-standard behavror of gcc