]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
aarch64: Fix bootstrap with --enable-checking=release [PR118771]
authorAndrew Pinski <quic_apinski@quicinc.com>
Thu, 6 Feb 2025 23:59:41 +0000 (15:59 -0800)
committerAndrew Pinski <quic_apinski@quicinc.com>
Fri, 7 Feb 2025 14:28:32 +0000 (06:28 -0800)
With release checking we get an uninitialization warning
inside aarch64_split_move because of jump threading for the case of `npieces==0`
but `npieces` is never 0 (but there is no way the compiler can know that.
So this fixes the issue by adding a `gcc_assert` to the function which asserts
that `npieces > 0` and fixes the uninitialization warning.

Bootstrapped and tested on aarch64-linux-gnu (with and without --enable-checking=release).

The warning:

aarch64.cc: In function 'void aarch64_split_move(rtx, rtx, machine_mode)':
aarch64.cc:3418:31: error: '*(rtx_def**)((char*)&dst_pieces + offsetof(auto_vec<rtx_def*, 4>,auto_vec<rtx_def*, 4>::m_data[0]))' may be used uninitialized [-Werror=maybe-uninitialized]
 3418 |   if (reg_overlap_mentioned_p (dst_pieces[0], src))
      |       ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
aarch64.cc:3408:20: note: 'dst_pieces' declared here
 3408 |   auto_vec<rtx, 4> dst_pieces, src_pieces;
      |                    ^~~~~~~~~~

PR target/118771
gcc/ChangeLog:

* config/aarch64/aarch64.cc (aarch64_split_move): Assert that npieces is
greater than 0.

Signed-off-by: Andrew Pinski <quic_apinski@quicinc.com>
gcc/config/aarch64/aarch64.cc

index c1e40200806a3c0d01b0a05f91d60b64c5a5af05..f5f23f6ff4b9dfc0c077170652ca6129a90f922b 100644 (file)
@@ -3407,6 +3407,9 @@ aarch64_split_move (rtx dst, rtx src, machine_mode single_mode)
                            GET_MODE_SIZE (single_mode)).to_constant ();
   auto_vec<rtx, 4> dst_pieces, src_pieces;
 
+  /* There should be at least one piece. */
+  gcc_assert (npieces > 0);
+
   for (unsigned int i = 0; i < npieces; ++i)
     {
       auto off = i * GET_MODE_SIZE (single_mode);