[Bug fortran/61999] [4.8/4.9/4.10 Regression] `gfc_simplify_dot_product` causes ICE for constant arguments
dominiq at lps dot ens.fr
gcc-bugzilla@gcc.gnu.org
Sun Aug 3 14:24:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61999
--- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The ICE is due to the line
gcc_assert (gfc_compare_types (&vector_a->ts, &vector_b->ts));
i.e., gfc_simplify_dot_product works only if the two vectors have the same
type. Replacing the assert with
--- ../_clean/gcc/fortran/simplify.c 2014-07-26 13:13:21.000000000 +0200
+++ gcc/fortran/simplify.c 2014-08-03 15:43:35.000000000 +0200
@@ -1883,7 +1883,8 @@ gfc_expr*
gfc_simplify_dot_product (gfc_expr *vector_a, gfc_expr *vector_b)
{
if (!is_constant_array_expr (vector_a)
- || !is_constant_array_expr (vector_b))
+ || !is_constant_array_expr (vector_b)
+ || !gfc_compare_types (&vector_a->ts, &vector_b->ts))
return NULL;
gcc_assert (vector_a->rank == 1);
fixes the problem. Indeed this prevents the dot product to be computed at
compile time. A better solution will be to do the type conversion, but I don't
know how to do it.
More information about the Gcc-bugs
mailing list