diff options
author | Harald Anlauf <anlauf@gmx.de> | 2021-01-28 10:13:46 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2021-01-28 10:13:46 +0100 |
commit | 33a7a93218b1393d0135e3c4a9ad9ced87808f5e (patch) | |
tree | 2347c01617cef1bd5b95b8c799ea3c9d7b3e348a /gcc/fortran | |
parent | c392d040f6cd29465b3b741003f45f2c27d80839 (diff) | |
download | gcc-33a7a93218b1393d0135e3c4a9ad9ced87808f5e.zip gcc-33a7a93218b1393d0135e3c4a9ad9ced87808f5e.tar.gz gcc-33a7a93218b1393d0135e3c4a9ad9ced87808f5e.tar.bz2 |
PR fortran/86470 - ICE with OpenMP, class(*) allocatable
gfc_call_malloc should malloc an area of size 1 if no size given.
gcc/fortran/ChangeLog:
PR fortran/86470
* trans.c (gfc_call_malloc): Allocate area of size 1 if passed
size is NULL (as documented).
gcc/testsuite/ChangeLog:
PR fortran/86470
* gfortran.dg/gomp/pr86470.f90: New test.
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/trans.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index a237691..ab53fc5 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -689,6 +689,9 @@ gfc_call_malloc (stmtblock_t * block, tree type, tree size) /* Call malloc. */ gfc_start_block (&block2); + if (size == NULL_TREE) + size = build_int_cst (size_type_node, 1); + size = fold_convert (size_type_node, size); size = fold_build2_loc (input_location, MAX_EXPR, size_type_node, size, build_int_cst (size_type_node, 1)); |