From: Harald Anlauf Date: Thu, 28 Jan 2021 09:13:46 +0000 (+0100) Subject: PR fortran/86470 - ICE with OpenMP, class(*) allocatable X-Git-Tag: releases/gcc-10.3.0~356 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0f42bb8722204fb83dcd001cc4254ad25b969402;p=thirdparty%2Fgcc.git 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. (cherry picked from commit 33a7a93218b1393d0135e3c4a9ad9ced87808f5e) --- diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index a1239ec2b538..4c197a0fbc10 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -644,6 +644,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)); diff --git a/gcc/testsuite/gfortran.dg/gomp/pr86470.f90 b/gcc/testsuite/gfortran.dg/gomp/pr86470.f90 new file mode 100644 index 000000000000..7e04437548c9 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/pr86470.f90 @@ -0,0 +1,12 @@ +! { dg-do compile } +! PR fortran/86470 - ICE with OpenMP, class(*) + +program p + implicit none + class(*), allocatable :: val +!$OMP PARALLEL private(val) + allocate(integer::val) + val = 1 + deallocate(val) +!$OMP END PARALLEL +end