diff options
author | Jennifer Schmitz <jschmitz@nvidia.com> | 2025-05-15 07:16:15 -0700 |
---|---|---|
committer | Jennifer Schmitz <jschmitz@nvidia.com> | 2025-05-19 08:18:56 +0200 |
commit | 2ec5082dd24cef5149ba645ee88a9acd8b4c290a (patch) | |
tree | 74b945b5f2d36dbbb1b9f8feb6eb228831bf7202 /libstdc++-v3/testsuite/std | |
parent | c9eb473fb9946f642506d24f4131d7c83855fd78 (diff) | |
download | gcc-2ec5082dd24cef5149ba645ee88a9acd8b4c290a.zip gcc-2ec5082dd24cef5149ba645ee88a9acd8b4c290a.tar.gz gcc-2ec5082dd24cef5149ba645ee88a9acd8b4c290a.tar.bz2 |
regcprop: Return from copy_value for unordered modes
The ICE in PR120276 resulted from a comparison of VNx4QI and V8QI using
partial_subreg_p in the function copy_value during the RTL pass
regcprop, failing the assertion in
inline bool
partial_subreg_p (machine_mode outermode, machine_mode innermode)
{
/* Modes involved in a subreg must be ordered. In particular, we must
always know at compile time whether the subreg is paradoxical. */
poly_int64 outer_prec = GET_MODE_PRECISION (outermode);
poly_int64 inner_prec = GET_MODE_PRECISION (innermode);
gcc_checking_assert (ordered_p (outer_prec, inner_prec));
return maybe_lt (outer_prec, inner_prec);
}
Returning from the function if the modes are not ordered before reaching
the call to partial_subreg_p resolves the ICE and passes bootstrap and
testing without regression.
OK for mainline?
Signed-off-by: Jennifer Schmitz <jschmitz@nvidia.com>
gcc/
PR middle-end/120276
* regcprop.cc (copy_value): Return in case of unordered modes.
gcc/testsuite/
PR middle-end/120276
* gcc.dg/torture/pr120276.c: New test.
Diffstat (limited to 'libstdc++-v3/testsuite/std')
0 files changed, 0 insertions, 0 deletions