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).