From 4dc6437183aec5439b88b076315ad8f31794d24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20K=C3=B6nig?= Date: Sun, 19 Apr 2020 12:56:32 +0200 Subject: Fix PR fortran/93500, ICE on invalid. Returning &gfc_bad_expr when simplifying bounds after a divisin by zero happened results in the division by zero error actually reaching the user. 2020-04-19 Thomas Koenig PR fortran/93500 * resolve.c (resolve_operator): If both operands are NULL, return false. * simplify.c (simplify_bound): If a division by zero was seen during bound simplification, free the corresponcing expression and return &gfc_bad_expr. 2020-04-19 Thomas Koenig PR fortran/93500 * arith_divide_3.f90: New test. --- gcc/fortran/resolve.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/fortran/resolve.c') diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 2371ab2..fd3b025 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -3992,6 +3992,9 @@ resolve_operator (gfc_expr *e) op1 = e->value.op.op1; op2 = e->value.op.op2; + if (op1 == NULL && op2 == NULL) + return false; + dual_locus_error = false; /* op1 and op2 cannot both be BOZ. */ -- cgit v1.1