When a byref function argument is passed through like this:
void leaf(struct X);
void middle(struct X a) {
leaf(a);
}... an unnecessary temporary copy may be introduced inside middle().
This patch makes that copy being eliminated by MemCpyOptimizer unless size of
the byref argument is 8 bytes or less (in that case memcpy() is eliminated by
InstCombine first preventing later optimization).
clang-tidy: warning: invalid case style for variable 'i' [readability-identifier-naming]
not useful
clang-tidy: warning: invalid case style for variable 'e' [readability-identifier-naming]
not useful