- Might it be possible to introduce and use by convention a new macro which will always wrap a new pointer in a mem expression with attributes copied from the previous mem/symbol's reference enforced?
This is already an easy function call. I don't see how adding a macro makes it easier to remember to call the function. If you have a concrete suggestion, then you are welcome to post it.
- One of the things that's been eluding me, is that I can't seem to find where literal string constant mem references aren't being properly declared and/or preserved as READONLY/unchanging references, resulting in MEM_READONLY_P failing to identify them; although literal char array references, which seem logically equivalent, do seem to be properly declared/preserved?
The tree to RTL conversion happens in expand_expr. Just search for STRING_CST in that function and then follow the call chain in the debugger til you find the place that is trying to set RTX_UNCHANGING_P. Old code set it unconditionally, but current code is a bit more complciated. Maybe there is something wrong with the new code.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com