Paul asked me off list to split up the previously submitted patch to make it
more reviewable. I used Claude to do this. The patches need to be applied in the
order given. The test cases are realigned with the portions being fixed.
This is the v3 PR49802 patch broken into a series, as requested. The
first patch holds everything that touches shared code that existing
callers go through; the remaining four add one feature or fix each, in
dependency order. The frontend code is unchanged from v3 -- this is a
pure re-partitioning other than some comments in test cases. Some test coverage
moved between value_15/16/18 so that each case sits in the patch that implements it.
1/5 [PR49802]-1 Add a deep copy mode to gfc_conv_subref_array_arg
trans.h, trans-expr.cc. No behaviour change for any existing
caller. Also fixes two latent problems in the pass_optional path
that 5/5 makes reachable.
2/5 [PR49802]-2 Allow VALUE on assumed-length CHARACTER dummies
resolve.cc, trans-types.cc, conv_dummy_value.
value_5 (updated), value_6, value_7, value_11, value_14.
3/5 [PR49802]-3 Allow VALUE on assumed-shape and explicit-shape array dummies
resolve.cc, symbol.cc, trans-types.cc, gfc_conv_procedure_call.
value_3, assumed_rank_11, c-interop/c535a-2 (updated), value_12,
value_13, value_16, value_17.
4/5 [PR49802]-4 Sequence association of a scalar actual with a VALUE array
dummy
has_value_array_dummy, conv_seq_assoc_value_arg. value_15.
5/5 [PR49802]-5 Absent optional actual argument passed to a VALUE dummy
conv_dummy_value, gfc_conv_procedure_call. value_18.
2/5 and 3/5 are independent of one another; both need 1/5, and 4/5 and
5/5 need 3/5.
Regression tested on x86_64-pc-linux-gnu at each of the five steps, not
only at the end of the series.
Regards,
Jerry