This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: ISO C binding and character variables
Hi Chris,
Christopher D. Rickett wrote:
> it should provide different output for -fdump-tree-original for having
> the patch applied and not having it applied (at least it does on my
> boxes).
Ok, it does but only for:
c_char_tests.f03
- if (my_char[1]{lb: 1 sz: 1} != 121)
+ if (my_char != 121)
{
_gfortran_abort ();
}
- if (my_char_2[1]{lb: 1 sz: 1} != 122)
+ if (my_char_2 != 122)
I would expect:
call test('a')
to be converted into
test('a')
or
test(*"a")
but in the dump I see:
test ("a", 1);
That is goes wrong can be seen in the following program; I get "a=_"
instead of the expected "a=a".
Tobias
module c_char_tests
use, intrinsic :: iso_c_binding, only: c_char
implicit none
contains
subroutine test(a) bind(c)
character(kind=c_char), value :: a
call test2(a)
end subroutine test
subroutine test2(a) bind(c)
character(kind=c_char), value :: a
print *, 'a=',a
end subroutine test2
end module
program main
use c_char_tests
implicit none
call test('a')
end program main