From ef6631051d4bb9519f3f0dd5f3b3eadbd67bc10a Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 3 Apr 2020 13:46:49 +0200 Subject: [PATCH] middle-end/94465 - handle released SSA names in array_ref_low_bound array_ref_low_bound is used in dumping ARRAY_REFs which in turn is called when basic blocks are deleted. cleanup_control_flow_pre consciously decides to remove unreachable basic-blocks in arbitrary order so the following makes array_ref_low_bound forgiving in the case the SSA name with the index definition has been released already. 2020-04-03 Richard Biener PR middle-end/94465 * tree.c (array_ref_low_bound): Deal with released SSA names in index position. --- gcc/ChangeLog | 6 ++++++ gcc/tree.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 11510ac9411..540cf1b41db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2020-04-03 Richard Biener + + PR middle-end/94465 + * tree.c (array_ref_low_bound): Deal with released SSA names + in index position. + 2020-04-03 Kwok Cheung Yeung * config/gcn/gcn.c (print_operand): Handle unordered comparison diff --git a/gcc/tree.c b/gcc/tree.c index 63dc6730b2b..0fe3afce1b6 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -13426,7 +13426,9 @@ array_ref_low_bound (tree exp) return SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_MIN_VALUE (domain_type), exp); /* Otherwise, return a zero of the appropriate type. */ - return build_int_cst (TREE_TYPE (TREE_OPERAND (exp, 1)), 0); + tree idxtype = TREE_TYPE (TREE_OPERAND (exp, 1)); + return (idxtype == error_mark_node + ? integer_zero_node : build_int_cst (idxtype, 0)); } /* Return a tree representing the upper bound of the array mentioned in -- 2.30.2