[1/3] expr: Export clear_by_pieces()
Commit Message
Make clear_by_pieces() available to other parts of the compiler,
similar to store_by_pieces().
gcc/ChangeLog:
* expr.cc (clear_by_pieces): Remove static from clear_by_pieces.
* expr.h (clear_by_pieces): Add prototype for clear_by_pieces.
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
---
gcc/expr.cc | 6 +-----
gcc/expr.h | 5 +++++
2 files changed, 6 insertions(+), 5 deletions(-)
Comments
On 5/7/24 11:38 PM, Christoph Müllner wrote:
> Make clear_by_pieces() available to other parts of the compiler,
> similar to store_by_pieces().
>
> gcc/ChangeLog:
>
> * expr.cc (clear_by_pieces): Remove static from clear_by_pieces.
> * expr.h (clear_by_pieces): Add prototype for clear_by_pieces.
OK
jeff
On 5/7/24 11:38 PM, Christoph Müllner wrote:
> Make clear_by_pieces() available to other parts of the compiler,
> similar to store_by_pieces().
>
> gcc/ChangeLog:
>
> * expr.cc (clear_by_pieces): Remove static from clear_by_pieces.
> * expr.h (clear_by_pieces): Add prototype for clear_by_pieces.
I'm going to push this series. It's fully ack'd, tested and is going to
interact with Sergei's work on vector variants of relevant patterns.
Jeff
@@ -85,7 +85,6 @@ static void emit_block_move_via_sized_loop (rtx, rtx, rtx, unsigned, unsigned);
static void emit_block_move_via_oriented_loop (rtx, rtx, rtx, unsigned, unsigned);
static rtx emit_block_cmp_via_loop (rtx, rtx, rtx, tree, rtx, bool,
unsigned, unsigned);
-static void clear_by_pieces (rtx, unsigned HOST_WIDE_INT, unsigned int);
static rtx_insn *compress_float_constant (rtx, rtx);
static rtx get_subtarget (rtx);
static rtx store_field (rtx, poly_int64, poly_int64, poly_uint64, poly_uint64,
@@ -1832,10 +1831,7 @@ store_by_pieces (rtx to, unsigned HOST_WIDE_INT len,
return to;
}
-/* Generate several move instructions to clear LEN bytes of block TO. (A MEM
- rtx with BLKmode). ALIGN is maximum alignment we can assume. */
-
-static void
+void
clear_by_pieces (rtx to, unsigned HOST_WIDE_INT len, unsigned int align)
{
if (len == 0)
@@ -245,6 +245,11 @@ extern bool can_store_by_pieces (unsigned HOST_WIDE_INT,
extern rtx store_by_pieces (rtx, unsigned HOST_WIDE_INT, by_pieces_constfn,
void *, unsigned int, bool, memop_ret);
+/* Generate several move instructions to clear LEN bytes of block TO. (A MEM
+ rtx with BLKmode). ALIGN is maximum alignment we can assume. */
+
+extern void clear_by_pieces (rtx, unsigned HOST_WIDE_INT, unsigned int);
+
/* If can_store_by_pieces passes for worst-case values near MAX_LEN, call
store_by_pieces within conditionals so as to handle variable LEN efficiently,
storing VAL, if non-NULL_RTX, or valc instead. */