[Bug fortran/42041] Missing defs in omp_lib.h
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
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
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
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
--- 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
--- 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
--- 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
--- 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