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?

Reply via email to