diff options
author | Martin Sebor <msebor@redhat.com> | 2019-04-18 20:26:07 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2019-04-18 14:26:07 -0600 |
commit | 6c76c0e408765f43253b2457363978f8fd5ca6f3 (patch) | |
tree | be8266aee428b157f5e99cffdb8c4f49d79d5da0 /gcc | |
parent | f6e809c849c8d0e0bfe5fa14bda0e663e0a65859 (diff) | |
download | gcc-6c76c0e408765f43253b2457363978f8fd5ca6f3.zip gcc-6c76c0e408765f43253b2457363978f8fd5ca6f3.tar.gz gcc-6c76c0e408765f43253b2457363978f8fd5ca6f3.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 3 | ||||
-rw-r--r-- | gcc/tree.h | 6 |
3 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 43100ca..3784ca2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-04-18 Martin Sebor <msebor@redhat.com> + + 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 <hubicka@ucw.cz> PR ipa/85051 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 9be7548..41bdefc 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. */ @@ -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 |