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.
/* 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));
--- /dev/null
+! { 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