1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -fdump-rtl-pro_and_epilogue" } */
16 typedef long unsigned int size_t;
17 extern unsigned char mode_size
[NUM_MACHINE_MODES
];
19 extern rtx
c_readstr (const char *, enum machine_mode
);
20 extern rtx
convert_to_mode (enum machine_mode
, rtx
, int);
21 extern rtx
expand_mult (enum machine_mode
, rtx
, rtx
, rtx
, int);
22 extern rtx
force_reg (enum machine_mode
, rtx
);
23 extern unsigned char mode_size_inline (enum machine_mode
);
24 extern void *memset (void *__s
, int __c
, size_t __n
);
27 builtin_memset_gen_str (void *data
, long offset
__attribute__ ((__unused__
)),
28 enum machine_mode mode
)
34 size
= ((unsigned short) (__builtin_constant_p (mode
)
35 ? mode_size_inline (mode
) : mode_size
[mode
]));
39 p
= ((char *) __builtin_alloca(sizeof (char) * (size
)));
41 coeff
= c_readstr (p
, mode
);
43 target
= convert_to_mode (mode
, (rtx
) data
, 1);
44 target
= expand_mult (mode
, target
, coeff
, (rtx
) 0, 1);
45 return force_reg (mode
, target
);
48 /* { dg-final { scan-rtl-dump "Performing shrink-wrapping" "pro_and_epilogue" } } */