]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
fortran: revise non-char pointer handling in gfc_conv_constant
authorYuao Ma <c8ef@outlook.com>
Mon, 27 Oct 2025 17:58:39 +0000 (01:58 +0800)
committerc8ef <c8ef@outlook.com>
Tue, 28 Oct 2025 14:55:26 +0000 (22:55 +0800)
PR fortran/122342

gcc/fortran/ChangeLog:

* trans-const.cc (gfc_conv_constant): Create a variable for the
non-char pointer.

gcc/testsuite/ChangeLog:

* gfortran.dg/coarray_atomic_5.f90: Update testcase.
* gfortran.dg/team_form_3.f90: Likewise.

gcc/fortran/trans-const.cc
gcc/testsuite/gfortran.dg/coarray_atomic_5.f90
gcc/testsuite/gfortran.dg/team_form_3.f90

index f70f36284a383eeab0ff61ea00bd2d110b6dcaa6..b1bf5671e0809ca5a8e4908199e3bb995a76edfa 100644 (file)
@@ -444,6 +444,8 @@ gfc_conv_constant (gfc_se * se, gfc_expr * expr)
       if (expr->ts.type == BT_CHARACTER)
        gfc_conv_string_parameter (se);
       else
-       se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
+       se->expr
+         = gfc_build_addr_expr (NULL_TREE,
+                                gfc_trans_force_lval (&se->pre, se->expr));
     }
 }
index 70c3d2ff4eb6de06f47f8409ccb58fa1c9ddebae..8ddfa8df27c66f739b00d9a3ad6c67946d835382 100644 (file)
@@ -19,7 +19,7 @@ program atomic
   write(*,*) me
 end program
 
-! { dg-final { scan-tree-dump-times "value.. = 0;" 1 "original" } }
-! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.., 0, 1, &value.., 0B, 1, 4\\);" 1 "original" } }
+! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = 0;" 1 "original" } }
+! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.., 0, 1, &D\\.\[0-9\]+, 0B, 1, 4\\);" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_op \\(1, caf_token.., 0, 1, &me, 0B, 0B, 1, 4\\);" 1 "original" } }
 ! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_ref \\(caf_token.., 0, 1, &me, 0B, 1, 4\\);" 1 "original" } }
index d9aae3376ead973a06b8d8abb45e97f640abf67a..13eb0c0999544c66474bc837e73f71650ecf5de0 100644 (file)
@@ -29,6 +29,6 @@ end
 ! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, 0B, 0B, 0\\)" "original" } }
 ! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, &istat, 0B, 0\\)" "original" } }
 ! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, &istat, &err, 30\\)" "original" } }
-! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, 0B, 0B, 0\\)" "original" } }
-! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, &istat, 0B, 0\\)" "original" } }
-! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, &istat, &err, 30\\)" "original" } }
+! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, 0B, 0B, 0\\)" "original" } }
+! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, &istat, 0B, 0\\)" "original" } }
+! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, &istat, &err, 30\\)" "original" } }