On 20.09.21 06:01, Sandra Loosemore wrote:
This patch fixes some bugs in handling of assumed-rank arguments
revealed by the TS29113 testsuite, allowing xfails to be removed from
those testcases. It was previously failing to diagnose an error when
passing an assumed-rank argument to a procedure via a non-assumed-rank
dummy, and giving a bogus error when passing one as the first argument
to the ASSOCIATED intrinsic. Both fixes turned out to be 1-liners.
OK to commit?
OK - however, I think you should first commit your follow-up/second patch (fix
testsuite)
to avoid intermittent test-suite fails.
Additionally, if I try the following testcase, which is now permitted, I get
two ICEs. Can you check?
* The first one seems to be a bug in gfc_conv_intrinsic_function, which
assumes also for assumed rank that if the first argument is an array,
the second argument must also be an array.
* For the second one, I see in the dump:
p->dim[p->dtype.rank + -1].stride
is seems as '-1' is gfc_array_index_type while 'dtype.rank' is
signed_char_type_node.
(Disclaimer: I don't have a clean tree, but I think this issue not affected
by my patches.)
subroutine foo(p, lp, lpd)
use iso_c_binding
implicit none (type, external)
real, pointer :: p(..)
real, pointer :: lp
real, pointer :: lpd(:,:)
! gfc_conv_expr_descriptor, at fortran/trans-array.c:7324
if (associated(p, lp)) stop 1
! verify_gimple: type mismatch in binary expression - signed char, signed char,
integer(kind=8), _4 = _3 + -1;
if (associated(p, lpd)) stop 1
end
Tobias
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht
München, HRB 106955