blob: 664d43aee1300819022691ac337d6b8c03d6b8dd [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-O2 -mstrict-align" } */
struct s { char x[255]; };
void foo (struct s *);
void bar (void) { struct s s1 = {}; foo (&s1); }
/* memset (s1 = {}, sizeof = 255) should be expanded out
such that there are no overlap stores when -mstrict-align
is in use.
so 7 pairs of 16 bytes stores (224 bytes).
1 16 byte stores
1 8 byte store
1 4 byte store
1 2 byte store
1 1 byte store
*/
/* { dg-final { scan-assembler-times "stp\tq" 7 } } */
/* { dg-final { scan-assembler-times "str\tq" 1 } } */
/* { dg-final { scan-assembler-times "str\txzr" 1 } } */
/* { dg-final { scan-assembler-times "str\twzr" 1 } } */
/* { dg-final { scan-assembler-times "strh\twzr" 1 } } */
/* { dg-final { scan-assembler-times "strb\twzr" 1 } } */
/* Also one store pair for the frame-pointer and the LR. */
/* { dg-final { scan-assembler-times "stp\tx" 1 } } */