]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/99121 - avoid ICEing for non-constant sizes
authorRichard Biener <rguenther@suse.de>
Thu, 7 Apr 2022 09:59:04 +0000 (11:59 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 7 Apr 2022 09:59:04 +0000 (11:59 +0200)
The following is a simple fix to avoid ICEing on non-constant
sizes of ARRAY_REFs instead of backporting too intrusive changes
done on trunk.

2022-04-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/99121
* gimple-array-bounds.cc (array_bounds_checker::check_mem_ref):
Bail out for non-constant type size.

gcc/gimple-array-bounds.cc

index 199d9f5d2161fc698d01997664508adec8a5188b..b11795186512725aafc4b3764c7dac604f1b4678 100644 (file)
@@ -607,6 +607,8 @@ array_bounds_checker::check_mem_ref (location_t location, tree ref,
 
       if (TREE_CODE (reftype) == ARRAY_TYPE)
        {
+         if (TREE_CODE (TYPE_SIZE_UNIT (TREE_TYPE (reftype))) != INTEGER_CST)
+           return false;
          /* Set to the size of the array element (and adjust below).  */
          eltsize = wi::to_offset (TYPE_SIZE_UNIT (TREE_TYPE (reftype)));
          /* Use log2 of size to convert the array byte size in to its