vect: fix out-of-bound access in supports_vec_convert_optab_p [PR 104851]
authorXi Ruoyao <xry111@mengyan1223.wang>
Wed, 9 Mar 2022 03:46:03 +0000 (11:46 +0800)
committerXi Ruoyao <xry111@mengyan1223.wang>
Wed, 9 Mar 2022 09:27:23 +0000 (17:27 +0800)
Calling VECTOR_MODE_P with MAX_MACHINE_MODE has caused out-of-bound
access.

gcc/

PR tree-optimization/104851
* optabs-query.cc (supports_vec_convert_optab_p): Fix off-by-one
error.

gcc/optabs-query.cc

index 713c098..68dc679 100644 (file)
@@ -720,7 +720,7 @@ static bool
 supports_vec_convert_optab_p (optab op, machine_mode mode)
 {
   int start = mode == VOIDmode ? 0 : mode;
-  int end = mode == VOIDmode ? MAX_MACHINE_MODE : mode;
+  int end = mode == VOIDmode ? MAX_MACHINE_MODE - 1 : mode;
   for (int i = start; i <= end; ++i)
     if (VECTOR_MODE_P ((machine_mode) i))
       for (int j = MIN_MODE_VECTOR_INT; j < MAX_MODE_VECTOR_INT; ++j)