diff options
author | Richard Biener <rguenther@suse.de> | 2022-04-12 09:54:32 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-04-12 10:53:46 +0200 |
commit | 1bd96873cf73c4f59de48e9bc0d17a498f1ede04 (patch) | |
tree | ebe308251d20cd5e901aa463ebd1f44ee609acf6 | |
parent | 62d5bb0f35fb6ec373eaac942755585a633528a0 (diff) | |
download | gcc-1bd96873cf73c4f59de48e9bc0d17a498f1ede04.zip gcc-1bd96873cf73c4f59de48e9bc0d17a498f1ede04.tar.gz gcc-1bd96873cf73c4f59de48e9bc0d17a498f1ede04.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.cc (component_ref_size): Bail out for too large
or non-constant sizes.
-rw-r--r-- | gcc/tree.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/tree.cc b/gcc/tree.cc index 8f83ea1..609f0b4 100644 --- a/gcc/tree.cc +++ b/gcc/tree.cc @@ -12961,6 +12961,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)) { |