Skip to content
Snippets Groups Projects
Commit 564b637f authored by Mikael Morin's avatar Mikael Morin
Browse files

fortran: Fix length one character dummy arg type [PR110419]

Revision r14-2171-g8736d6b14a4dfdfb58c80ccd398981b0fb5d00aa
changed the argument passing convention for length 1 value dummy
arguments to pass just the single character by value.  However, the
procedure declarations weren't updated to reflect the change in the
argument types.
This change does the missing argument type update.

The change of argument types generated an internal error in
gfc_conv_string_parameter with value_9.f90.  Indeed, that function is
not prepared for bare character type, so it is updated as well.

The condition guarding the single character argument passing code
is loosened to not exclude non-interoperable kind (this fixes
a regression with c_char_tests_2.f03).

Finally, the constant string argument passing code is updated as well
to extract the single char and pass it instead of passing it as
a length one string.  As the code taking care of non-constant arguments
was already doing this, the condition guarding it is just removed.

With these changes, value_9.f90 passes on 32 bits big-endian powerpc.

	PR fortran/110360
	PR fortran/110419

gcc/fortran/ChangeLog:

	* trans-types.cc (gfc_sym_type): Use a bare character type for length
	one value character dummy arguments.
	* trans-expr.cc (gfc_conv_string_parameter): Handle single character
	case.
	(gfc_conv_procedure_call): Don't exclude interoperable kinds
	from single character handling.  For single character dummy arguments,
	extend the existing handling of non-constant expressions to constant
	expressions.

gcc/testsuite/ChangeLog:

	* gfortran.dg/bind_c_usage_13.f03: Update tree dump patterns.
parent e0a8218f
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment