[Bug middle-end/85637] Unneeded store of member variables in inner loop
petschy at gmail dot com
gcc-bugzilla@gcc.gnu.org
Fri May 4 11:18:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85637
--- Comment #5 from petschy at gmail dot com ---
Thanks, in this specific case __restrict works indeed.
On a side note, is it possible to achieve the same when a char is stored
through a char* member, and also incremented? eg:
if (m_cur < m_end)
*m_cur = val;
++m_cur;
Since char* aliases everything, m_cur and m_end won't be kept in registers
properly as the compiler assumes that the store through *m_cur might have
changed them. No amount of __restrict pepper helped with this.
Is it far fetched to request an extension which can be turned on via a cmdline
flag and causes 'char* __restict p' to behave like any other restricted ptr, ie
not aliasing any other char*'s, let alone other types? Any serialization code
that uses classes to store the ptrs would benefit from this, as no more in-loop
re-load/store would be needed for the members.
More information about the Gcc-bugs
mailing list