[Bug fortran/42041] Missing defs in omp_lib.h

2011-08-02 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041

--- Comment #7 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=gccview=revrev=177194
Log:
Merge from gomp-3_1-branch branch:

2011-08-02  Jakub Jelinek  ja...@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 

[Bug fortran/42041] Missing defs in omp_lib.h

2011-08-02 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED

--- Comment #8 from Jakub Jelinek jakub at gcc dot gnu.org 2011-08-02 
17:15:28 UTC ---
In 4.7+.


[Bug fortran/42041] Missing defs in omp_lib.h

2011-02-24 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041

Jakub Jelinek jakub at gcc dot gnu.org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu.org

--- Comment #5 from Jakub Jelinek jakub at gcc dot gnu.org 2011-02-24 
14:15:52 UTC ---
Ugh, the OpenMP 3.1 draft change is exactly the opposite of FX's patch.
If all those functions are supposed to return default integer instead of
integer of some implementation chosen kind, I wonder how it can be portably
implemented, unless the FE would be playing some ugly tricks and sign extending
from kind 4 to kind 8 integer if requested.


[Bug fortran/42041] Missing defs in omp_lib.h

2011-02-24 Thread jakub at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041

--- Comment #6 from Jakub Jelinek jakub at gcc dot gnu.org 2011-02-24 
16:22:28 UTC ---
Author: jakub
Date: Thu Feb 24 16:22:24 2011
New Revision: 170475

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=170475
Log:
* omp.h.in (omp_in_final): New prototype.
* omp_lib.f90.in (omp_in_final): New interface.
* 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.
* task.c (omp_in_final): New function.
* fortran.c (omp_in_final_): Likewise.
* libgomp.map (OMP_3.1): Export omp_in_final and omp_in_final_.

PR fortran/42041
* omp_lib.f90.in (omp_integer_kind, omp_logical_kind): Remove
and replace all its uses in the module with 4.

Modified:
branches/gomp-3_1-branch/libgomp/ChangeLog
branches/gomp-3_1-branch/libgomp/fortran.c
branches/gomp-3_1-branch/libgomp/libgomp.map
branches/gomp-3_1-branch/libgomp/omp.h.in
branches/gomp-3_1-branch/libgomp/omp_lib.f90.in
branches/gomp-3_1-branch/libgomp/omp_lib.h.in
branches/gomp-3_1-branch/libgomp/task.c


[Bug fortran/42041] Missing defs in omp_lib.h

2010-06-10 Thread fxcoudert at gcc dot gnu dot org


--- Comment #4 from fxcoudert at gcc dot gnu dot org  2010-06-10 20:36 
---
Patch proposed at: http://gcc.gnu.org/ml/gcc-patches/2010-06/msg01143.html


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |fxcoudert at gcc dot gnu dot
   |dot org |org
URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2010-
   ||06/msg01143.html
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Keywords||patch
   Last reconfirmed|-00-00 00:00:00 |2010-06-10 20:36:38
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041



[Bug fortran/42041] Missing defs in omp_lib.h

2009-11-16 Thread longb at cray dot com


--- Comment #2 from longb at cray dot com  2009-11-16 16:58 ---
I posed this question to the Cray OpenMP committee member:

Jim @ ISU submitted a bug against gfortran noting that some parameters 
defined in the omp_lib Fortran module are missing from the corresponding 
omp_lib.h include file.   The GNU guys are claiming that the difference 
is intentional, and are right that in the 3.0 standard the 'missing' 
declarations are only in the Example module in D3, and not in the 
Example include file in D2.  They are not mentioned in the normative 
text in Chapter 3.   Is this difference intentional?   Or is it an 
oversight in the standard?Could you add a Comment to Bug 753421? 
Thanks.


And got this reply:

The differences between the omp_lib.h and omp_lib module are actually a bug in
the specification.  I have an open issue in my name with the OpenMP Language
committee to submit a proposed fix for this.  The solution will be to make the
types default to the size of a default integer.  This change will be in the 3.1
specification due for release by SC10.

--

From which I would conclude that this bug will come back again when the OpenMP
spec is corrected.  Might be easier to just fix it now.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041



[Bug fortran/42041] Missing defs in omp_lib.h

2009-11-16 Thread burnus at gcc dot gnu dot org


--- Comment #3 from burnus at gcc dot gnu dot org  2009-11-17 07:56 ---
Reopened based on comment 2 to make sure this is/remains on the radar


-- 

burnus at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041



[Bug fortran/42041] Missing defs in omp_lib.h

2009-11-14 Thread jakub at gcc dot gnu dot org


--- Comment #1 from jakub at gcc dot gnu dot org  2009-11-14 10:59 ---
When only D.3 lists them and D.2 doesn't is IMHO a clear sign that they belong
into omp_lib.f90 only and not into omp_lib.h.
These two parameters are never mentioned in the standard except for D.3/D.4
AFAIK, and D.3 just covers omp_lib module and D.4 only talks about that module
too.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42041