After the recent discussion on cfe-dev 'Can indirect class parameters be
noalias?' [1], it seems like using using noalias is problematic for
current C++, but should be allowed for C-only code.
This patch introduces a new option to let the user indicate that it is
safe to mark indirect class parameters as noalias. Note that this also
applies to external callers, e.g. it might not be safe to use this flag
for C functions that are called by C++ functions.
In targets that allocate indirect arguments in the called function, this
enables more agressive optimizations with respect to memory operations
and brings a ~1% - 2% codesize reduction for some programs.
I am not sure about the best name for the option and description. I
would appreciate any feedback.
[1] : http://lists.llvm.org/pipermail/cfe-dev/2020-July/066353.html
This should be a code-gen option, I think. I can't really imagine how this would affect language processing.