From a674c7b8b8028c5d7e52dd38783e8e2b02034b63 Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Mon, 17 Feb 2020 09:18:39 -0500 Subject: analyzer: fix ICE on pointer arithmetic with incomplete types [PR 93774] PR analyzer/93774 reports an ICE in gfortran with -fanalyzer within region_model::convert_byte_offset_to_array_index on a pointer of incomplete type ("character(kind=1)[0:][1:0] * restrict"). This patch bulletproofs the routine against incomplete types, fixing the ICE. gcc/analyzer/ChangeLog: PR analyzer/93774 * region-model.cc (region_model::convert_byte_offset_to_array_index): Use int_size_in_bytes before calling size_in_bytes, to gracefully fail on incomplete types. gcc/testsuite/ChangeLog: PR analyzer/93774 * gfortran.dg/analyzer/deferred_character_25.f90: New test, based on gfortran.dg/deferred_character_25.f90. --- gcc/analyzer/ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'gcc/analyzer/ChangeLog') diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index f9fd80c..9e57209 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,11 @@ +2020-02-18 David Malcolm + + PR analyzer/93774 + * region-model.cc + (region_model::convert_byte_offset_to_array_index): Use + int_size_in_bytes before calling size_in_bytes, to gracefully fail + on incomplete types. + 2020-02-17 David Malcolm PR analyzer/93775 -- cgit v1.1