https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109641
--- Comment #3 from anlauf at gcc dot gnu.org --- Untested patch: diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index 02028f993fd..d70b4872162 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -986,6 +986,14 @@ gfc_type_convert_binary (gfc_expr *e, int wconversion) goto done; } + gfc_expression_rank (op1); + gfc_expression_rank (op2); + if (op1->rank > 0 && op2->rank && (op1->rank != op2->rank)) + { + gfc_clear_ts (&e->ts); + return; + } + /* Real combined with complex. */ e->ts.type = BT_COMPLEX; if (op1->ts.kind > op2->ts.kind)