diff options
Diffstat (limited to 'gcc/expr.h')
-rw-r--r-- | gcc/expr.h | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -1010,6 +1010,25 @@ extern void use_group_regs PARAMS ((rtx *, rtx)); alignment. */ extern rtx clear_storage PARAMS ((rtx, rtx, unsigned int)); +/* Return non-zero if it is desirable to store LEN bytes generated by + CONSTFUN with several move instructions by store_by_pieces + function. CONSTFUNDATA is a pointer which will be passed as argument + in every CONSTFUN call. + ALIGN is maximum alignment we can assume. */ +extern int can_store_by_pieces PARAMS ((unsigned HOST_WIDE_INT, + rtx (*) (PTR, HOST_WIDE_INT, + enum machine_mode), + PTR, unsigned int)); + +/* Generate several move instructions to store LEN bytes generated by + CONSTFUN to block TO. (A MEM rtx with BLKmode). CONSTFUNDATA is a + pointer which will be passed as argument in every CONSTFUN call. + ALIGN is maximum alignment we can assume. */ +extern void store_by_pieces PARAMS ((rtx, unsigned HOST_WIDE_INT, + rtx (*) (PTR, HOST_WIDE_INT, + enum machine_mode), + PTR, unsigned int)); + /* Emit insns to set X from Y. */ extern rtx emit_move_insn PARAMS ((rtx, rtx)); |