From 6c76c0e408765f43253b2457363978f8fd5ca6f3 Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Thu, 18 Apr 2019 20:26:07 +0000 Subject: [PATCH] PR middle-end/89797 - ICE on a vector_size (1LU << 33) int variable gcc/ChangeLog: * tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U. * config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid assuming type size fits in SHWI. From-SVN: r270447 --- gcc/ChangeLog | 7 +++++++ gcc/config/aarch64/aarch64.c | 3 +-- gcc/tree.h | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43100ca0277..3784ca2d465 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-04-18 Martin Sebor + + PR middle-end/89797 + * tree.h (TYPE_VECTOR_SUBPARTS): Use HOST_WIDE_INT_1U. + * config/aarch64/aarch64.c (aarch64_simd_vector_alignment): Avoid + assuming type size fits in SHWI. + 2019-04-18 Jan Hubicka PR ipa/85051 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 9be75485ce3..41bdefc6fee 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -14924,8 +14924,7 @@ aarch64_simd_vector_alignment (const_tree type) be set for non-predicate vectors of booleans. Modes are the most direct way we have of identifying real SVE predicate types. */ return GET_MODE_CLASS (TYPE_MODE (type)) == MODE_VECTOR_BOOL ? 16 : 128; - HOST_WIDE_INT align = tree_to_shwi (TYPE_SIZE (type)); - return MIN (align, 128); + return wi::umin (wi::to_wide (TYPE_SIZE (type)), 128).to_uhwi (); } /* Implement target hook TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT. */ diff --git a/gcc/tree.h b/gcc/tree.h index 7c00c292eb9..2f2f109451a 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -3735,13 +3735,13 @@ TYPE_VECTOR_SUBPARTS (const_tree node) if (NUM_POLY_INT_COEFFS == 2) { poly_uint64 res = 0; - res.coeffs[0] = 1 << (precision & 0xff); + res.coeffs[0] = HOST_WIDE_INT_1U << (precision & 0xff); if (precision & 0x100) - res.coeffs[1] = 1 << (precision & 0xff); + res.coeffs[1] = HOST_WIDE_INT_1U << (precision & 0xff); return res; } else - return (unsigned HOST_WIDE_INT)1 << precision; + return HOST_WIDE_INT_1U << precision; } /* Set the number of elements in VECTOR_TYPE NODE to SUBPARTS, which must -- 2.30.2