diff options
author | Richard Biener <rguenther@suse.de> | 2022-04-12 09:54:32 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-04-12 11:49:59 +0200 |
commit | 008d568ac7eba4057172c52d306e09d174041c59 (patch) | |
tree | 6c5d3b445cc416ccc7ac6f779114634f247fe18f | |
parent | 249aa9348ddf06b8961a3418c74e6d83963cdc1e (diff) | |
download | gcc-008d568ac7eba4057172c52d306e09d174041c59.zip gcc-008d568ac7eba4057172c52d306e09d174041c59.tar.gz gcc-008d568ac7eba4057172c52d306e09d174041c59.tar.bz2 |
tree-optimization/105232 - handle overly large sizes in component_ref_size
The following properly checks tree_fits_poly_int64_p before converting
a size to a poly_int64.
2022-04-12 Richard Biener <rguenther@suse.de>
PR tree-optimization/105232
* tree.c (component_ref_size): Bail out for too large
or non-constant sizes.
(cherry picked from commit 1bd96873cf73c4f59de48e9bc0d17a498f1ede04)
-rw-r--r-- | gcc/tree.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -13951,6 +13951,8 @@ component_ref_size (tree ref, special_array_member *sam /* = NULL */) to struct types with flexible array members. */ if (memsize) { + if (!tree_fits_poly_int64_p (memsize)) + return NULL_TREE; poly_int64 memsz64 = memsize ? tree_to_poly_int64 (memsize) : 0; if (known_lt (baseoff, memsz64)) { |