https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112525
--- Comment #1 from Jiu Fu Guo <guojiufu at gcc dot gnu.org> --- (In reply to Jiu Fu Guo from comment #0) > For below code: > ``` > typedef struct teststruct > { > double d; > int arr[15]; /* for ppc64le example foo1, 14: foo is just blr. 15: foo has > 8 'std's */ > } teststruct; Here, if the code is "int arr[14];", the struct is just passed via registers (in foo function); and in the expander pass, they are stored to frame area. If the code is "int arr[15];", the struct is passed through registers partially, and the other partial is through memory; and in the expander pass, they are stored to the area which is pointed via arg pointer. In DSE pass, the 'dead' stores to 'frame' can be eliminated.