Skip to content

Commit b6146fa

Browse files
committed
fortran: revise non-char pointer handling in gfc_conv_constant
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.
1 parent e6322a6 commit b6146fa

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

gcc/fortran/trans-const.cc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,6 +444,8 @@ gfc_conv_constant (gfc_se * se, gfc_expr * expr)
444444
if (expr->ts.type == BT_CHARACTER)
445445
gfc_conv_string_parameter (se);
446446
else
447-
se->expr = gfc_build_addr_expr (NULL_TREE, se->expr);
447+
se->expr
448+
= gfc_build_addr_expr (NULL_TREE,
449+
gfc_trans_force_lval (&se->pre, se->expr));
448450
}
449451
}

gcc/testsuite/gfortran.dg/coarray_atomic_5.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ program atomic
1919
write(*,*) me
2020
end program
2121

22-
! { dg-final { scan-tree-dump-times "value.. = 0;" 1 "original" } }
23-
! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.., 0, 1, &value.., 0B, 1, 4\\);" 1 "original" } }
22+
! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = 0;" 1 "original" } }
23+
! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_define \\(caf_token.., 0, 1, &D\\.\[0-9\]+, 0B, 1, 4\\);" 1 "original" } }
2424
! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_op \\(1, caf_token.., 0, 1, &me, 0B, 0B, 1, 4\\);" 1 "original" } }
2525
! { dg-final { scan-tree-dump-times "_gfortran_caf_atomic_ref \\(caf_token.., 0, 1, &me, 0B, 1, 4\\);" 1 "original" } }

gcc/testsuite/gfortran.dg/team_form_3.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@
2929
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, 0B, 0B, 0\\)" "original" } }
3030
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, &istat, 0B, 0\\)" "original" } }
3131
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, 0B, &istat, &err, 30\\)" "original" } }
32-
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, 0B, 0B, 0\\)" "original" } }
33-
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, &istat, 0B, 0\\)" "original" } }
34-
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &C\\.\[0-9\]+, &istat, &err, 30\\)" "original" } }
32+
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, 0B, 0B, 0\\)" "original" } }
33+
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, &istat, 0B, 0\\)" "original" } }
34+
! { dg-final { scan-tree-dump "_gfortran_caf_form_team \\(new_team, &team, &D\\.\[0-9\]+, &istat, &err, 30\\)" "original" } }

0 commit comments

Comments
 (0)