https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83801
--- Comment #6 from gandalf at winds dot org --- (In reply to Georg-Johann Lay from comment #1) > Old v7.2 does it correctly: one string in flash, one in RAM. My more specific testcase (comment #3 in PR83729) references a 32-byte string in a function that is only called once in my program, in a slow code path (e.g. initialization). I understand there is a slowdown incurred by LPM instructions when using __flash, hence the compiler may want to optimize this condition. But since RAM is more limited than Flash on AVR (and I know my use of memory vs. large strings), I specifically use __flash to specify I want certain strings like this one located in flash memory instead of RAM. Is that not the purpose of __flash? Why would the compiler duplicate this string in RAM? What if my string happened to be larger than the total RAM available?