In some cases (after inliing due to LTO and -O3), GCC cannot
figure out that the length of the converts vect is not empty
when supportable_indirect_convert_operation returns true. So
we get an extra warning because we loop through all but the last
entry and GCC decided that `converts.length () - 1` is -1. This
adds an checking only assert to avoid the warning and maybe even
produce slightly better code for this function.
Bootstrapped and tested on x86_64-linux-gnu.
PR tree-optimization/118616
gcc/ChangeLog:
* tree-vect-generic.cc (expand_vector_conversion): Add
an assert that converts vect is non empty if
supportable_indirect_convert_operation returns true.
Signed-off-by: Andrew Pinski <[email protected]>
---
gcc/tree-vect-generic.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/gcc/tree-vect-generic.cc b/gcc/tree-vect-generic.cc
index 173ebd9a7ba..246297ec6a9 100644
--- a/gcc/tree-vect-generic.cc
+++ b/gcc/tree-vect-generic.cc
@@ -1759,6 +1759,7 @@ expand_vector_conversion (gimple_stmt_iterator *gsi)
converts))
{
new_rhs = arg;
+ gcc_checking_assert (!converts.is_empty ());
for (unsigned int i = 0; i < converts.length () - 1; i++)
{
new_lhs = make_ssa_name (converts[i].first);
--
2.43.0