https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113156
--- Comment #10 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- -mdouble and -mlong-double are more complicated than other options because they depend on each other in way that (to my knowledge) cannot be described by option properties. For example, in -mdouble=64 -mlong-double=32 the second option will trigger -mdouble=32 in order to maintain double <= long double. This logic is implemented in avr-common.cc::avr_handle_option(), and maybe that's the reason "Save" is needed? Anyway, when the actions of avr_handle_option are changed by some attribue handling, then the result will be wong code. For example, when the above options, for whatever reasons, would lead to double=64 longdouble=32 at some point, wrong code will be generated.