PR fortran/100274 - ICE in gfc_conv_procedure_call, at fortran/trans-expr.c:6131
authorHarald Anlauf <anlauf@gmx.de>
Wed, 5 May 2021 13:25:50 +0000 (15:25 +0200)
committerHarald Anlauf <anlauf@gmx.de>
Wed, 5 May 2021 13:25:50 +0000 (15:25 +0200)
commita8b79cc939d6786293f654c42a2d1b0ab040de0e
tree03f0d8b2532c9e139e588d1fdd1ab1c8fe494560
parentf3661f2d63fbc5fd30c24d22137691e16b0a0a17
PR fortran/100274 - ICE in gfc_conv_procedure_call, at fortran/trans-expr.c:6131

When the check for the length of formal and actual character arguments
found a mismatch and emitted a warning, it would skip further checks
like that could lead to errors.  Fix that by continuing the checking.
Also catch a NULL pointer dereference.

gcc/fortran/ChangeLog:

PR fortran/100274
* interface.c (gfc_compare_actual_formal): Continue checks after
emitting warning for argument length mismatch.
* trans-expr.c (gfc_conv_procedure_call): Check for NULL pointer
dereference.

gcc/testsuite/ChangeLog:

PR fortran/100274
* gfortran.dg/argument_checking_25.f90: New test.
gcc/fortran/interface.c
gcc/fortran/trans-expr.c
gcc/testsuite/gfortran.dg/argument_checking_25.f90 [new file with mode: 0644]