This excludes BOOLEAN_TYPE which are signed or have TYPE_PRECISION != 1
from being handled as VECTOR_BOOLEAN_TYPE_P.  This fixes a bootstrap
ICE with LTO and PGO in the Ada frontend.

Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.

Richard.

2020-10-07  Richard Biener  <rguent...@suse.de>

        PR bootstrap/95582
        * tree-vectorizer.h (VECT_SCALAR_BOOLEAN_TYPE_P): Handle
        BOOLEAN_TYPE the same as INTEGER_TYPE and ENUMERAL_TYPE.
---
 gcc/tree-vectorizer.h | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 37b091558fd..e03d41ce982 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -1383,11 +1383,9 @@ struct gather_scatter_info {
    VECTOR_BOOLEAN_TYPE_P.  */
 
 #define VECT_SCALAR_BOOLEAN_TYPE_P(TYPE) \
-  (TREE_CODE (TYPE) == BOOLEAN_TYPE            \
-   || ((TREE_CODE (TYPE) == INTEGER_TYPE       \
-       || TREE_CODE (TYPE) == ENUMERAL_TYPE)   \
-       && TYPE_PRECISION (TYPE) == 1           \
-       && TYPE_UNSIGNED (TYPE)))
+  (INTEGRAL_TYPE_P (TYPE)               \
+   && TYPE_PRECISION (TYPE) == 1        \
+   && TYPE_UNSIGNED (TYPE))
 
 static inline bool
 nested_in_vect_loop_p (class loop *loop, stmt_vec_info stmt_info)
-- 
2.26.2

Reply via email to