[Bug fortran/94246] [9/10 Regression] valgrind error for ./gfortran.dg/bessel_5.f90 since r9-1566-g87c789f1c0b2df41
sgk at troutmask dot apl.washington.edu
gcc-bugzilla@gcc.gnu.org
Mon Mar 23 20:20:20 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94246
--- Comment #9 from Steve Kargl <sgk at troutmask dot apl.washington.edu> ---
On Mon, Mar 23, 2020 at 07:29:02PM +0000, anlauf at gcc dot gnu.org wrote:
> --- Comment #7 from anlauf at gcc dot gnu.org ---
> I get an ICE even for the non-valgrind version on x86_64-pc-linux-gnu:
>
> gcc/testsuite/gfortran.dg/bessel_5.f90:64:50:
>
> 64 | if (any (BESSEL_YN(0, 10, 0.0) /= [ (BESSEL_YN(i, 0.0), i = 0, 10) ]))
> &
> | 1
> Error: Result of BESSEL_YN overflows its kind at (1)
> gcc/testsuite/gfortran.dg/bessel_5.f90:64:26:
>
> 64 | if (any (BESSEL_YN(0, 10, 0.0) /= [ (BESSEL_YN(i, 0.0), i = 0, 10) ]))
> &
> | 1
> Error: Result of BESSEL_YN is -INF at (1)
> f951: internal compiler error: Segmentation fault
(snip)
>
> I agree with Richard that this should not happen.
>
1. Fix the errors that are already emitted. It won't happen.
2. Use -fmax-errors = 1. It won't happen. -fmax-errors=1 should
be the default. Unfortunately, the GCC diagnosistic has usurped
that option.
3. Write correct Fortran. It won't happen.
4. Apply this patch. Watch for cut-n-paste tab corruption.
ndex: gcc/fortran/arith.c
===================================================================
--- gcc/fortran/arith.c (revision 280157)
+++ gcc/fortran/arith.c (working copy)
@@ -1322,6 +1322,12 @@ reduce_binary_ac (arith (*eval) (gfc_expr *, gfc_expr
else
{
gfc_constructor *c = gfc_constructor_first (head);
+
+ if (!c)
+ gfc_fatal_error ("\"To handle a language skillfully is to "
+ "practice a kind of evocative sorcery.\" "
+ "Charles Baudelaire");
+
r = gfc_get_array_expr (c->expr->ts.type, c->expr->ts.kind,
&op1->where);
r->shape = gfc_copy_shape (op1->shape, op1->rank);
More information about the Gcc-bugs
mailing list