aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorHarald Anlauf <anlauf@gmx.de>2021-01-28 10:13:46 +0100
committerHarald Anlauf <anlauf@gmx.de>2021-01-28 10:13:46 +0100
commit33a7a93218b1393d0135e3c4a9ad9ced87808f5e (patch)
tree2347c01617cef1bd5b95b8c799ea3c9d7b3e348a /gcc/fortran
parentc392d040f6cd29465b3b741003f45f2c27d80839 (diff)
downloadgcc-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.c3
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));