From: H.J. Lu Date: Fri, 30 Apr 2021 11:36:36 +0000 (-0700) Subject: Update alignment_for_piecewise_move X-Git-Tag: basepoints/gcc-13~7999 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=18d713fbd345c5c54ab6091ac5f114df4551d1bb;p=thirdparty%2Fgcc.git Update alignment_for_piecewise_move alignment_for_piecewise_move is called only with MOVE_MAX_PIECES or STORE_MAX_PIECES, which are the number of bytes at a time that we can move or store efficiently. We should call mode_for_size without limit to MAX_FIXED_MODE_SIZE, which is an integer expression for the size in bits of the largest integer machine mode that should actually be used, may be smaller than MOVE_MAX_PIECES or STORE_MAX_PIECES, which may use vector. * expr.c (alignment_for_piecewise_move): Call mode_for_size without limit to MAX_FIXED_MODE_SIZE. --- diff --git a/gcc/expr.c b/gcc/expr.c index e0167b774105..b4c110f8c179 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -746,7 +746,7 @@ static unsigned int alignment_for_piecewise_move (unsigned int max_pieces, unsigned int align) { scalar_int_mode tmode - = int_mode_for_size (max_pieces * BITS_PER_UNIT, 1).require (); + = int_mode_for_size (max_pieces * BITS_PER_UNIT, 0).require (); if (align >= GET_MODE_ALIGNMENT (tmode)) align = GET_MODE_ALIGNMENT (tmode);