https://gcc.gnu.org/g:a42f3381fed7327a0d3cdf1a04f174e0ce7cfea1

commit a42f3381fed7327a0d3cdf1a04f174e0ce7cfea1
Author: Mikael Morin <mik...@gcc.gnu.org>
Date:   Thu Jan 23 20:59:24 2025 +0100

    Correction régression scalar descriptor

Diff:
---
 gcc/fortran/trans-expr.cc | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc
index b9b085dbf07c..95b168fe76a8 100644
--- a/gcc/fortran/trans-expr.cc
+++ b/gcc/fortran/trans-expr.cc
@@ -6392,7 +6392,12 @@ done:
       gfc_add_modify (&block, gfc, fold_convert (TREE_TYPE (gfc), tmp));
     }
   else
-    set_gfc_from_cfi (&block2, gfc, cfi, rank, fsym);
+    {
+      tmp = gfc_get_cfi_desc_base_addr (cfi);
+      gfc_conv_descriptor_data_set (&block, gfc, tmp);
+
+      set_gfc_from_cfi (&block2, gfc, cfi, rank, fsym);
+    }
 
   if (e->ts.type == BT_CHARACTER && !e->ts.u.cl->length)
     {
@@ -6406,16 +6411,11 @@ done:
       gfc_add_modify (&block2, gfc_strlen, tmp);
     }
 
-  tmp2 = gfc_finish_block (&block2);
-
-  gfc_init_block (&block2);
-  tmp = gfc_get_cfi_desc_base_addr (cfi);
-  gfc_conv_descriptor_data_set (&block2, gfc, null_pointer_node);
-
   tmp = gfc_get_cfi_desc_base_addr (cfi),
   tmp = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
                         tmp, null_pointer_node);
-  tmp = build3_v (COND_EXPR, tmp, tmp2, gfc_finish_block (&block2));
+  tmp = build3_v (COND_EXPR, tmp, gfc_finish_block (&block2),
+                 build_empty_stmt (input_location));
   gfc_add_expr_to_block (&block, tmp);
 
 post_call:

Reply via email to