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)

Reply via email to