[llvm-dev] RFC: Remove inaccessiblememonly from 3.8 branch
Philip Reames via llvm-dev
llvm-dev at lists.llvm.org
Wed Feb 10 13:12:57 PST 2016
A while back, we introduced new attributes to model functions which read
and wrote from locations not otherwise visible in the IR. The
motivation was to enable much more aggressive aliasing around such calls.
Since that time, we've reverted the original patch and AFAIK we have no
transformation or analysis passes in tree which use this information.
Given this, I don't think it's really fair to say the attribute has
baked at all. We have no reason to believe that we picked the right
semantics, and last I remember, there was some legitimate question about
that. Worse, AFAIK, all active development has stopped. I don't know
of any active reviews for this attribute.
These attributes have not yet shipped in any LLVM release, but this is
about to change in 3.8. Once that changes, we will have accepted a
backwards compatibility guarantee with bitcode which is potentially
concerning for a new attribute in such a half developed state.
Given the preceding, I'd like to propose that we remove the
inaccessiblememonly and inaccessiblemem_or_argmemonly attributes from
the 3.8 release branch. This could be done by either a) actually
removing the code, or b) simply disabling it. If we remove the
documentation from the LangRef, disable the LL and bitcode parsing for
the attribute, and explicitly document that we are not reserving the
attribute index numbers, I think that prevents any assumption of forward
compatibility. Another option would be to mark them experimental, which
would have effectively the same effect.
The original GlobalsAA:
The last active revision I know of: (Abandoned Jan 6)
More information about the llvm-dev