[PowerPC] Fix issue with lowering byval parameters.
authorStefan Pintilie <stefanp@ca.ibm.com>
Wed, 22 Sep 2021 16:44:55 +0000 (11:44 -0500)
committerStefan Pintilie <stefanp@ca.ibm.com>
Wed, 6 Oct 2021 18:19:15 +0000 (13:19 -0500)
commit740086596c93952113220ed0c2fadcce0fa44832
tree562955f56d034a50a109194d18c5c01d1c52a1ab
parent4be7f48960980831a9b744c96f38ddb7dc7848ce
[PowerPC] Fix issue with lowering byval parameters.

Lowering of byval parameters with sizes that are not represented by a single
store require multiple stores to properly address the correct size of the
parameter.

Sizes that cannot be done with a single store are 3 bytes, 5 bytes, 6 bytes,
7 bytes. It is not correct to simply perform an 8 byte store and for these
elements because then the store would be larger than the element and alias
analysis would assume that this is undefined behaivour and return NoAlias
for them.

This patch adds the correct stores so that the size of the store is not larger
than the size of the element.

Reviewed By: nemanjai, #powerpc

Differential Revision: https://reviews.llvm.org/D108795
llvm/lib/Target/PowerPC/PPCISelLowering.cpp
llvm/test/CodeGen/PowerPC/jaggedstructs.ll
llvm/test/CodeGen/PowerPC/ppc64-byval-multi-store.ll
llvm/test/CodeGen/PowerPC/structsinregs.ll