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