[Bug target/118771] [15 regression] aarch64 bootstrap fails with --enabled-checking=release because of uninitialized warning
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 7 14:29:44 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118771
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pinskia@gcc.gnu.org>:
https://gcc.gnu.org/g:ea4278b1ced4a4c982678094e98ef3efd844917a
commit r15-7419-gea4278b1ced4a4c982678094e98ef3efd844917a
Author: Andrew Pinski <quic_apinski@quicinc.com>
Date: Thu Feb 6 15:59:41 2025 -0800
aarch64: Fix bootstrap with --enable-checking=release [PR118771]
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>
More information about the Gcc-bugs
mailing list