public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
@ 2010-12-01 20:24 longb at cray dot com
2010-12-01 21:26 ` [Bug fortran/46752] " burnus at gcc dot gnu.org
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: longb at cray dot com @ 2010-12-01 20:24 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Summary: OpenMP - Seg fault for unallocated allocatable array
in firstprivate clause
Product: gcc
Version: 4.5.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: longb@cray.com
Test Case:
> cat test.f90
! derived from OpenMP test omp3f/F03_2_9_3_4_5c.f90
program F03_2_9_3_4_5c
use omp_lib
implicit none
integer, parameter :: NT = 4
integer, allocatable :: allocatable_array(:)
integer :: i
call omp_set_dynamic(.false.)
call omp_set_num_threads(NT)
!$omp parallel
! use schedule(static, 1) so each thread executes an iteration
!$omp do firstprivate(allocatable_array) schedule(static, 1)
do i = 1, NT
! Per OpenMP 3.0, p. 90, lines 33-34: "if the list item is "not
! currently allocated", the new list item will have an initial state
of
! "not currently allocated";
if (ALLOCATED(allocatable_array) .neqv. .false.) then
print *, "FAIL - ALLOCATED(allocatable_array) == .true.", &
" (expected .false.)"
end if
end do
!$omp end parallel
end program F03_2_9_3_4_5c
> gfortran -fopenmp test.f90
> ./a.out
Fortran runtime error:
[the remaining text after error: appears to be missing, including the newline
character.]
The code executes when compiled with other compilers, and produces no output.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
@ 2010-12-01 21:26 ` burnus at gcc dot gnu.org
2010-12-02 9:45 ` jakub at gcc dot gnu.org
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: burnus at gcc dot gnu.org @ 2010-12-01 21:26 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |openmp, wrong-code
CC| |burnus at gcc dot gnu.org
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-12-01 21:26:10 UTC ---
Older GCC 4.6:
Fortran runtime error: Attempt to allocate negative amount of memory. Possible
integer overflow
Current GCC 4.6:
Operating system error: Cannot allocate memory
Out of memory
Valgrind:
==15971== Warning: silly arg (-1485340) to malloc()
==15971== Warning: silly arg (-1485340) to malloc()
Operating system error: Success
Out of memory
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
2010-12-01 21:26 ` [Bug fortran/46752] " burnus at gcc dot gnu.org
@ 2010-12-02 9:45 ` jakub at gcc dot gnu.org
2010-12-02 17:22 ` longb at cray dot com
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2010-12-02 9:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
CC| |jakub at gcc dot gnu.org
Resolution| |INVALID
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2010-12-02 09:44:57 UTC ---
That is invalid testcase.
The Fortran restrictions on FIRSTPRIVATE clause, OpenMP 3.0, page 93, say:
A variable that appears in a firstprivate clause must be definable.
and Fortran standard says:
An allocatable variable that has not been allocated is an example of a data
object that is not definable.
Non-definable allocatables are allowed just in PRIVATE or SHARED clauses.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
2010-12-01 21:26 ` [Bug fortran/46752] " burnus at gcc dot gnu.org
2010-12-02 9:45 ` jakub at gcc dot gnu.org
@ 2010-12-02 17:22 ` longb at cray dot com
2010-12-02 17:56 ` burnus at gcc dot gnu.org
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: longb at cray dot com @ 2010-12-02 17:22 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
--- Comment #3 from Bill Long <longb at cray dot com> 2010-12-02 17:22:48 UTC ---
Conflicting commentary from the OpenMP testers and James Beyer of the OpenMP
committee:
This test case is derived from OpenMP test omp3f/F03_2_9_3_4_5c.f90 .
The case involves an allocatable array that is unallocated in the
sequential portion of the test, but whose name appears in a
firstprivate clause on a do loop construct. This usage is not
specifically prohibited in the API. James Beyer says that 'We
did intentionally allow allocatables that are not allocated into
the firstprivate clause', so the test case should be acceptable
and produce the desired result at runtime.
The test case runs successfully on Cray, PGI, Intel, and Sun compilers.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (2 preceding siblings ...)
2010-12-02 17:22 ` longb at cray dot com
@ 2010-12-02 17:56 ` burnus at gcc dot gnu.org
2010-12-02 18:43 ` longb at cray dot com
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: burnus at gcc dot gnu.org @ 2010-12-02 17:56 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> 2010-12-02 17:55:56 UTC ---
(In reply to comment #3)
> This usage is not specifically prohibited in the API.
Sound like a paraphrase for "implementation defined"/"processor dependent" to
me.
> James Beyer says that 'We did intentionally allow allocatables that are
> not allocated into the firstprivate clause'
Which seemingly did not work as the combining both standard disallows it, cf.
comment 2.
As Cray has a representative at the OpenMP ARB and as there is an almost ready
OpenMP 3.1 draft (I think the current voting round ends on Tuesday): How about
suggesting the OpenMP ARB that one explicitly states in the upcoming OpenMP
spec that it is allowed?
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (3 preceding siblings ...)
2010-12-02 17:56 ` burnus at gcc dot gnu.org
@ 2010-12-02 18:43 ` longb at cray dot com
2010-12-02 19:42 ` burnus at gcc dot gnu.org
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: longb at cray dot com @ 2010-12-02 18:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
--- Comment #5 from Bill Long <longb at cray dot com> 2010-12-02 18:42:53 UTC ---
Reply from James:
Version 3.1 of the OpenMP specification removes the offending bullet: " A
variable that appears in a firstprivate clause must be definable." When the
new spec is released GCC will have to change to allow this test.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (4 preceding siblings ...)
2010-12-02 18:43 ` longb at cray dot com
@ 2010-12-02 19:42 ` burnus at gcc dot gnu.org
2011-02-08 22:29 ` burnus at gcc dot gnu.org
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: burnus at gcc dot gnu.org @ 2010-12-02 19:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |WAITING
Last reconfirmed| |2010.12.02 19:41:57
Resolution|INVALID |
Ever Confirmed|0 |1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (5 preceding siblings ...)
2010-12-02 19:42 ` burnus at gcc dot gnu.org
@ 2011-02-08 22:29 ` burnus at gcc dot gnu.org
2011-04-19 16:45 ` jakub at gcc dot gnu.org
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: burnus at gcc dot gnu.org @ 2011-02-08 22:29 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |NEW
--- Comment #6 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-02-08 22:24:41 UTC ---
(In reply to comment #5)
> Reply from James:
>
> Version 3.1 of the OpenMP specification removes the offending bullet: " A
> variable that appears in a firstprivate clause must be definable." When the
> new spec is released GCC will have to change to allow this test.
The OpenMP 3.1 draft is now available at http://openmp.org/wp/ ; cf. page
97/98.
* * *
Side remark: The issues mentioned in PR 45430, PR 42865 and
http://openmp.org/forum/viewtopic.php?f=5&t=7&start=10#p292 seems also be
solved, cf. "2.9.4.1 copyin clause" (p. 106-107) in the new spec.
The old spec had the following in 2.9.4.1 (p98, l17-18): "An array with the
ALLOCATABLE attribute must be in the allocated state. Each thread's copy of
that array must be allocated with the same bounds."
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (6 preceding siblings ...)
2011-02-08 22:29 ` burnus at gcc dot gnu.org
@ 2011-04-19 16:45 ` jakub at gcc dot gnu.org
2011-08-02 16:14 ` jakub at gcc dot gnu.org
2011-08-02 17:15 ` jakub at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-04-19 16:45 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-04-19 16:44:02 UTC ---
Author: jakub
Date: Tue Apr 19 16:43:51 2011
New Revision: 172720
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=172720
Log:
PR fortran/46752
* trans-openmp.c (gfc_omp_clause_copy_ctor): Handle
non-allocated allocatable.
* openmp.c (resolve_omp_clauses): Allow POINTERs and
Cray pointers in clauses other than REDUCTION.
* trans-openmp.c (gfc_omp_predetermined_sharing): Adjust
comment.
* gfortran.dg/gomp/crayptr1.f90: Don't expect error
about Cray pointer in FIRSTPRIVATE/LASTPRIVATE.
* testsuite/libgomp.fortran/crayptr3.f90: New test.
* testsuite/libgomp.fortran/allocatable7.f90: New test.
* testsuite/libgomp.fortran/pointer1.f90: New test.
* testsuite/libgomp.fortran/pointer2.f90: New test.
Added:
branches/gomp-3_1-branch/libgomp/testsuite/libgomp.fortran/allocatable7.f90
branches/gomp-3_1-branch/libgomp/testsuite/libgomp.fortran/crayptr3.f90
branches/gomp-3_1-branch/libgomp/testsuite/libgomp.fortran/pointer1.f90
branches/gomp-3_1-branch/libgomp/testsuite/libgomp.fortran/pointer2.f90
Modified:
branches/gomp-3_1-branch/gcc/fortran/ChangeLog
branches/gomp-3_1-branch/gcc/fortran/openmp.c
branches/gomp-3_1-branch/gcc/fortran/trans-openmp.c
branches/gomp-3_1-branch/gcc/testsuite/ChangeLog
branches/gomp-3_1-branch/gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
branches/gomp-3_1-branch/libgomp/ChangeLog
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (7 preceding siblings ...)
2011-04-19 16:45 ` jakub at gcc dot gnu.org
@ 2011-08-02 16:14 ` jakub at gcc dot gnu.org
2011-08-02 17:15 ` jakub at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-08-02 16:14 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-08-02 16:13:35 UTC ---
Author: jakub
Date: Tue Aug 2 16:13:29 2011
New Revision: 177194
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=177194
Log:
Merge from gomp-3_1-branch branch:
2011-08-02 Jakub Jelinek <jakub@redhat.com>
gcc/
* c-parser.c (enum c_parser_prec): New enum, moved from within
c_parser_binary_expression.
(c_parser_binary_expression): Add PREC argument. Stop parsing
if operator has lower or equal precedence than PREC.
(c_parser_conditional_expression, c_parser_omp_for_loop): Adjust
callers.
(c_parser_omp_atomic): Handle parsing OpenMP 3.1 atomics.
Adjust c_finish_omp_atomic caller.
(c_parser_omp_taskyield): New function.
(c_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
(c_parser_omp_clause_name): Handle final and mergeable clauses.
(c_parser_omp_clause_final, c_parser_omp_clause_mergeable): New
functions.
(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
and PRAGMA_OMP_CLAUSE_MERGEABLE.
(OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
(c_parser_omp_clause_reduction): Handle min and max.
* c-typeck.c (c_finish_omp_clauses): Don't complain about
const qualified predetermined vars in firstprivate clause.
andle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE.
Handle MIN_EXPR and MAX_EXPR.
* tree-pretty-print.c (dump_omp_clause): Handle OMP_CLAUSE_FINAL
and OMP_CLAUSE_MERGEABLE.
(dump_generic_node): Handle OMP_ATOMIC_READ, OMP_ATOMIC_CAPTURE_OLD
and OMP_ATOMIC_CAPTURE_NEW.
* tree.c (omp_clause_num_ops): Add OMP_CLAUSE_FINAL and
OMP_CLAUSE_MERGEABLE.
(omp_clause_code_name): Likewise.
(walk_tree_1): Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE.
* tree.h (enum omp_clause_code): Add OMP_CLAUSE_FINAL
and OMP_CLAUSE_MERGEABLE.
(OMP_CLAUSE_FINAL_EXPR): Define.
* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE_FINAL and
OMP_CLAUSE_MERGEABLE.
(expand_task_call): Likewise.
(expand_omp_atomic_load, expand_omp_atomic_store): New functions.
(expand_omp_atomic_fetch_op): Handle cases where old or new
value is needed afterwards.
(expand_omp_atomic): Call expand_omp_atomic_load resp.
expand_omp_atomic_store.
* gimplify.c (gimplify_omp_atomic, gimplify_expr): Handle
OMP_ATOMIC_READ, OMP_ATOMIC_CAPTURE_OLD and OMP_ATOMIC_CAPTURE_NEW.
(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE.
* tree-nested.c (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Likewise.
* tree.def (OMP_ATOMIC_READ, OMP_ATOMIC_CAPTURE_OLD,
OMP_ATOMIC_CAPTURE_NEW): New.
* gimple.h (GF_OMP_ATOMIC_NEED_VALUE): New.
(gimple_omp_atomic_need_value_p, gimple_omp_atomic_set_need_value):
New inlines.
* omp-builtins.def (BUILT_IN_GOMP_TASKYIELD): New builtin.
* doc/generic.texi: Mention OMP_CLAUSE_COLLAPSE,
OMP_CLAUSE_UNTIED, OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE.
gcc/c-family/
* c-common.h (c_finish_omp_atomic): Adjust prototype.
(c_finish_omp_taskyield): New prototype.
* c-omp.c (c_finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
arguments. Handle OMP_ATOMIC_READ, OMP_ATOMIC_CAPTURE_OLD and
OMP_ATOMIC_CAPTURE_NEW in addition to OMP_ATOMIC. If LHS1
or RHS1 have side-effects, evaluate those too in the right spot,
if it is a decl and LHS is also a decl, error out if they
aren't the same.
(c_finish_omp_taskyield): New function.
* c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP to 201107.
* c-pragma.c (omp_pragmas): Add taskyield.
* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_TASKYIELD.
(enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_FINAL and
PRAGMA_OMP_CLAUSE_MERGEABLE.
gcc/cp/
* cp-tree.h (finish_omp_atomic): Adjust prototype.
(cxx_omp_const_qual_no_mutable): New prototype.
(finish_omp_taskyield): New prototype.
* parser.c (cp_parser_omp_atomic): (cp_parser_omp_atomic): Handle
parsing OpenMP 3.1 atomics. Adjust finish_omp_atomic caller.
(cp_parser_omp_clause_name): Handle final and mergeable clauses.
(cp_parser_omp_clause_final, cp_parser_omp_clause_mergeable): New
functions.
(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_FINAL
and PRAGMA_OMP_CLAUSE_MERGEABLE.
(OMP_TASK_CLAUSE_MASK): Allow final and mergeable clauses.
(cp_parser_omp_taskyield): New function.
(cp_parser_pragma): Handle PRAGMA_OMP_TASKYIELD.
(cp_parser_omp_clause_reduction): Handle min and max.
* pt.c (tsubst_expr) <case OMP_ATOMIC>: Handle OpenMP 3.1 atomics.
(tsubst_omp_clauses): Handle OMP_CLAUSE_FINAL and
OMP_CLAUSE_MERGEABLE.
* semantics.c (finish_omp_atomic): Add OPCODE, V, LHS1 and RHS1
arguments. Handle OpenMP 3.1 atomics. Adjust c_finish_omp_atomic
caller.
(finish_omp_clauses): Don't complain about const qualified
predetermined vars and static data members in firstprivate clause.
Handle OMP_CLAUSE_FINAL and OMP_CLAUSE_MERGEABLE. Handle MIN_EXPR
and MAX_EXPR.
(finish_omp_taskyield): New function.
* cp-gimplify.c (cxx_omp_const_qual_no_mutable): New function.
(cxx_omp_predetermined_sharing): Use it.
gcc/fortran/
PR fortran/46752
* cpp.c (cpp_define_builtins): Change _OPENMP to 201107.
* openmp.c (gfc_free_omp_clauses): Free also final_expr.
(OMP_CLAUSE_FINAL, OMP_CLAUSE_MERGEABLE): Define.
(gfc_match_omp_clauses): Handle parsing final and mergeable
clauses.
(OMP_TASK_CLAUSES): Allow final and mergeable clauses.
(gfc_match_omp_taskyield): New function.
(resolve_omp_clauses): Resolve final clause. Allow POINTERs and
Cray pointers in clauses other than REDUCTION.
(gfc_match_omp_atomic): Match optional
read/write/update/capture keywords after !$omp atomic.
(resolve_omp_atomic): Handle all OpenMP 3.1 atomic forms.
* dump-parse-tree.c (show_omp_node): Handle EXEC_OMP_TASKYIELD,
print final and mergeable clauses.
(show_code_node): Handle EXEC_OMP_TASKYIELD.
* trans-openmp.c (gfc_trans_omp_clauses): Handle final and
mergeable clauses.
(gfc_trans_omp_taskyield): New function.
(gfc_trans_omp_directive): Handle EXEC_OMP_TASKYIELD.
(gfc_trans_omp_atomic): Handle all OpenMP 3.1 atomic forms.
(gfc_omp_clause_copy_ctor): Handle non-allocated allocatable.
(gfc_omp_predetermined_sharing): Adjust comment.
* gfortran.h (gfc_statement): Add ST_OMP_TASKYIELD and
ST_OMP_END_ATOMIC.
(gfc_omp_clauses): Add final_expr and mergeable fields.
(gfc_exec_op): Add EXEC_OMP_TASKYIELD.
(gfc_omp_atomic_op): New enum typedef.
(struct gfc_code): Add ext.omp_atomic.
* trans.c (trans_code): Handle EXEC_OMP_TASKYIELD.
* frontend-passes.c (gfc_code_walker): Also walk final_expr.
* resolve.c (gfc_resolve_blocks, resolve_code): Handle
EXEC_OMP_TASKYIELD.
* st.c (gfc_free_statement): Likewise.
* match.h (gfc_match_omp_taskyield): New prototype.
* parse.c (decode_omp_directive): Handle taskyield directive.
Handle !$omp end atomic.
(case_executable): Add ST_OMP_TASKYIELD case.
(gfc_ascii_statement): Handle ST_OMP_TASKYIELD.
(parse_omp_atomic): Return gfc_statement instead of void.
For !$omp atomic capture parse two assignments instead of
just one and require !$omp end atomic afterwards, for
other !$omp atomic forms just allow !$omp end atomic at the
end.
(parse_omp_structured_block, parse_executable): Adjust
parse_omp_atomic callers.
2011-08-02 Tobias Burnus <burnus@net-b.de>
* intrinsic.c (OMP_LIB): Updated openmp_version's
value to 201107.
* gfortran.texi (OpenMP): Update ref to OpenMP 3.1.
* intrinsic.texi (OpenMP Modules): Update ref to OpenMP 3.1;
remove deleted omp_integer_kind and omp_logical_kind constants.
gcc/testsuite/
PR fortran/46752
* gcc.dg/gomp/atomic-5.c: Adjust expected diagnostics.
* gcc.dg/gomp/atomic-15.c: New test.
* g++.dg/gomp/atomic-5.C: Adjust expected diagnostics.
* g++.dg/gomp/atomic-15.C: New test.
* g++.dg/gomp/private-1.C: New test.
* g++.dg/gomp/sharing-2.C: New test.
* gfortran.dg/gomp/crayptr1.f90: Don't expect error
about Cray pointer in FIRSTPRIVATE/LASTPRIVATE.
* gfortran.dg/gomp/omp_atomic2.f90: New test.
libgomp/
PR fortran/42041
PR fortran/46752
* omp.h.in (omp_in_final): New prototype.
* omp_lib.f90.in (omp_in_final): New interface.
(omp_integer_kind, omp_logical_kind): Remove
and replace all its uses in the module with 4.
(openmp_version): Change to 201107.
* omp_lib.h.in (omp_sched_static, omp_sched_dynamic,
omp_sched_guided, omp_sched_auto): Use omp_sched_kind
kind for the parameters.
(omp_in_final): New external.
(openmp_version): Change to 201107.
* task.c (omp_in_final): New function.
(gomp_init_task): Initialize final_task.
(GOMP_task): Remove unused attribute from flags. Handle final
tasks.
(GOMP_taskyield): New function.
(omp_in_final): Return true if if (false) or final (true) task
or descendant of final (true).
* fortran.c (omp_in_final_): New function.
* libgomp.map (OMP_3.1): Export omp_in_final and omp_in_final_.
(GOMP_3.0): Export GOMP_taskyield.
* env.c (gomp_nthreads_var_list, gomp_nthreads_var_list_len): New
variables.
(parse_unsigned_long_list): New function.
(initialize_env): Use it for OMP_NUM_THREADS. Call parse_boolean
with "OMP_PROC_BIND". If OMP_PROC_BIND=true, call gomp_init_affinity
even if parse_affinity returned false.
* config/linux/affinity.c (gomp_init_affinity): Handle
gomp_cpu_affinity_len == 0.
* libgomp_g.h (GOMP_taskyield): New prototype.
* libgomp.h (struct gomp_task): Add final_task field.
(gomp_nthreads_var_list, gomp_nthreads_var_list_len): New externs.
* team.c (gomp_team_start): Override new task's nthreads_var icv
if list form OMP_NUM_THREADS has been used and it has value for
the new nesting level.
* testsuite/libgomp.c/atomic-11.c: New test.
* testsuite/libgomp.c/atomic-12.c: New test.
* testsuite/libgomp.c/atomic-13.c: New test.
* testsuite/libgomp.c/atomic-14.c: New test.
* testsuite/libgomp.c/reduction-6.c: New test.
* testsuite/libgomp.c/task-5.c: New test.
* testsuite/libgomp.c++/atomic-2.C: New test.
* testsuite/libgomp.c++/atomic-3.C: New test.
* testsuite/libgomp.c++/atomic-4.C: New test.
* testsuite/libgomp.c++/atomic-5.C: New test.
* testsuite/libgomp.c++/atomic-6.C: New test.
* testsuite/libgomp.c++/atomic-7.C: New test.
* testsuite/libgomp.c++/atomic-8.C: New test.
* testsuite/libgomp.c++/atomic-9.C: New test.
* testsuite/libgomp.c++/task-8.C: New test.
* testsuite/libgomp.c++/reduction-4.C: New test.
* testsuite/libgomp.fortran/allocatable7.f90: New test.
* testsuite/libgomp.fortran/allocatable8.f90: New test.
* testsuite/libgomp.fortran/crayptr3.f90: New test.
* testsuite/libgomp.fortran/omp_atomic3.f90: New test.
* testsuite/libgomp.fortran/omp_atomic4.f90: New test.
* testsuite/libgomp.fortran/pointer1.f90: New test.
* testsuite/libgomp.fortran/pointer2.f90: New test.
* testsuite/libgomp.fortran/task4.f90: New test.
2011-08-02 Tobias Burnus <burnus@net-b.de>
* libgomp.texi: Update OpenMP spec references to 3.1.
(omp_in_final,OMP_PROC_BIND): New sections.
(OMP_NUM_THREADS): Document that the value can be now a list.
(GOMP_STACKSIZE,GOMP_CPU_AFFINITY): Update @ref.
Added:
trunk/gcc/testsuite/g++.dg/gomp/atomic-15.C
trunk/gcc/testsuite/g++.dg/gomp/private-1.C
trunk/gcc/testsuite/g++.dg/gomp/sharing-2.C
trunk/gcc/testsuite/gcc.dg/gomp/atomic-15.c
trunk/gcc/testsuite/gfortran.dg/gomp/omp_atomic2.f90
trunk/libgomp/testsuite/libgomp.c++/atomic-2.C
trunk/libgomp/testsuite/libgomp.c++/atomic-3.C
trunk/libgomp/testsuite/libgomp.c++/atomic-4.C
trunk/libgomp/testsuite/libgomp.c++/atomic-5.C
trunk/libgomp/testsuite/libgomp.c++/atomic-6.C
trunk/libgomp/testsuite/libgomp.c++/atomic-7.C
trunk/libgomp/testsuite/libgomp.c++/atomic-8.C
trunk/libgomp/testsuite/libgomp.c++/atomic-9.C
trunk/libgomp/testsuite/libgomp.c++/reduction-4.C
trunk/libgomp/testsuite/libgomp.c++/task-8.C
trunk/libgomp/testsuite/libgomp.c/atomic-11.c
trunk/libgomp/testsuite/libgomp.c/atomic-12.c
trunk/libgomp/testsuite/libgomp.c/atomic-13.c
trunk/libgomp/testsuite/libgomp.c/atomic-14.c
trunk/libgomp/testsuite/libgomp.c/reduction-6.c
trunk/libgomp/testsuite/libgomp.c/task-5.c
trunk/libgomp/testsuite/libgomp.fortran/allocatable7.f90
trunk/libgomp/testsuite/libgomp.fortran/allocatable8.f90
trunk/libgomp/testsuite/libgomp.fortran/crayptr3.f90
trunk/libgomp/testsuite/libgomp.fortran/omp_atomic3.f90
trunk/libgomp/testsuite/libgomp.fortran/omp_atomic4.f90
trunk/libgomp/testsuite/libgomp.fortran/pointer1.f90
trunk/libgomp/testsuite/libgomp.fortran/pointer2.f90
trunk/libgomp/testsuite/libgomp.fortran/task4.f90
Modified:
trunk/gcc/ChangeLog
trunk/gcc/c-family/ChangeLog
trunk/gcc/c-family/c-common.h
trunk/gcc/c-family/c-cppbuiltin.c
trunk/gcc/c-family/c-omp.c
trunk/gcc/c-family/c-pragma.c
trunk/gcc/c-family/c-pragma.h
trunk/gcc/c-parser.c
trunk/gcc/c-typeck.c
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/cp-gimplify.c
trunk/gcc/cp/cp-tree.h
trunk/gcc/cp/parser.c
trunk/gcc/cp/pt.c
trunk/gcc/cp/semantics.c
trunk/gcc/doc/generic.texi
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/cpp.c
trunk/gcc/fortran/dump-parse-tree.c
trunk/gcc/fortran/frontend-passes.c
trunk/gcc/fortran/gfortran.h
trunk/gcc/fortran/gfortran.texi
trunk/gcc/fortran/intrinsic.texi
trunk/gcc/fortran/match.h
trunk/gcc/fortran/openmp.c
trunk/gcc/fortran/parse.c
trunk/gcc/fortran/resolve.c
trunk/gcc/fortran/st.c
trunk/gcc/fortran/trans-openmp.c
trunk/gcc/fortran/trans.c
trunk/gcc/gimple.h
trunk/gcc/gimplify.c
trunk/gcc/omp-builtins.def
trunk/gcc/omp-low.c
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/g++.dg/gomp/atomic-5.C
trunk/gcc/testsuite/g++.dg/gomp/clause-3.C
trunk/gcc/testsuite/gcc.dg/gomp/atomic-5.c
trunk/gcc/testsuite/gcc.dg/gomp/clause-1.c
trunk/gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
trunk/gcc/tree-nested.c
trunk/gcc/tree-pretty-print.c
trunk/gcc/tree.c
trunk/gcc/tree.def
trunk/gcc/tree.h
trunk/libgomp/ChangeLog
trunk/libgomp/config/linux/affinity.c
trunk/libgomp/env.c
trunk/libgomp/fortran.c
trunk/libgomp/libgomp.h
trunk/libgomp/libgomp.map
trunk/libgomp/libgomp.texi
trunk/libgomp/libgomp_g.h
trunk/libgomp/omp.h.in
trunk/libgomp/omp_lib.f90.in
trunk/libgomp/omp_lib.h.in
trunk/libgomp/task.c
trunk/libgomp/team.c
^ permalink raw reply [flat|nested] 11+ messages in thread
* [Bug fortran/46752] OpenMP - Seg fault for unallocated allocatable array in firstprivate clause
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
` (8 preceding siblings ...)
2011-08-02 16:14 ` jakub at gcc dot gnu.org
@ 2011-08-02 17:15 ` jakub at gcc dot gnu.org
9 siblings, 0 replies; 11+ messages in thread
From: jakub at gcc dot gnu.org @ 2011-08-02 17:15 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46752
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> 2011-08-02 17:14:55 UTC ---
In 4.7+.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2011-08-02 17:15 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-01 20:24 [Bug fortran/46752] New: OpenMP - Seg fault for unallocated allocatable array in firstprivate clause longb at cray dot com
2010-12-01 21:26 ` [Bug fortran/46752] " burnus at gcc dot gnu.org
2010-12-02 9:45 ` jakub at gcc dot gnu.org
2010-12-02 17:22 ` longb at cray dot com
2010-12-02 17:56 ` burnus at gcc dot gnu.org
2010-12-02 18:43 ` longb at cray dot com
2010-12-02 19:42 ` burnus at gcc dot gnu.org
2011-02-08 22:29 ` burnus at gcc dot gnu.org
2011-04-19 16:45 ` jakub at gcc dot gnu.org
2011-08-02 16:14 ` jakub at gcc dot gnu.org
2011-08-02 17:15 ` jakub at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).