I just switched to WinAVR 20080610 from 20071221 and I've discovered a significant increase in the code size for EEPROM read/write. In a nutshell:
a) eeprom_read_byte() and eeprom_write_byte() are now inlined (12 bytes per use instead of 4). You also get a stand-alone copy if you use word or block versions.
b) The word and block EEPROM functions have gone from 10 bytes to 42-56 bytes each. Instead of making simple calls to the byte version, they're now passed function pointers.
Anyone know why these changes were made? Any chance of getting back to the old compact way?