summaryrefslogtreecommitdiff
path: root/gcc/ChangeLog.gomp
blob: c8d5f76f5649e379ca6694eeb05d00cc0c2498a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
2013-04-30  Jakub Jelinek  <jakub@redhat.com>

	* omp-low.c (check_omp_nesting_restrictions): Diagnose
	OpenMP constructs nested inside simd region.  Don't treat
	#pragma omp simd as work-sharing region.  Disallow work-sharing
	constructs inside of critical region.  Complain if ordered
	region is nested inside of parallel region without loop
	region in between.
	(scan_omp_1_stmt): Call check_omp_nesting_restrictions even
	for GOMP_{cancel{,lation_point},taskyield,taskwait} calls.

2013-04-23  Jakub Jelinek  <jakub@redhat.com>

	* Makefile.in (omp-low.o): Depend on $(TARGET_H).
	* gimplify.c (gimplify_adjust_omp_clauses): For linear clauses
	if outer_context is non-NULL, but not ORT_COMBINED_PARALLEL,
	call omp_notice_variable.  Remove aligned clauses that can't
	be handled yet.
	* omp-low.c: Include target.h.
	(scan_sharing_clauses): For aligned clauses with global arrays
	register local replacement.
	(omp_clause_aligned_alignment): New function.
	(lower_rec_input_clauses): For aligned clauses for global
	arrays or automatic pointers emit __builtin_assume_aligned
	before the loop if possible.
	(expand_omp_regimplify_p, expand_omp_build_assign): New functions.
	(expand_omp_simd): Use them.  Handle pointer iterators and broken
	loops.
	(lower_omp_for): Call lower_omp on gimple_omp_body_ptr after
	calling lower_rec_input_clauses, not before it.

2013-04-19  Jakub Jelinek  <jakub@redhat.com>

	* tree.h (OMP_CLAUSE_LINEAR_NO_COPYIN,
	OMP_CLAUSE_LINEAR_NO_COPYOUT): Define.
	* omp-low.c (extract_omp_for_data): Handle #pragma omp simd.
	(build_outer_var_ref): For #pragma omp simd allow linear etc.
	clauses to bind even to private vars.
	(scan_sharing_clauses): Handle OMP_CLAUSE_LINEAR, OMP_CLAUSE_ALIGNED
	and OMP_CLAUSE_SAFELEN.
	(lower_rec_input_clauses): Handle OMP_CLAUSE_LINEAR.  Don't emit
	a GOMP_barrier call for firstprivate/lastprivate in #pragma omp simd.
	(lower_lastprivate_clauses): Handle also OMP_CLAUSE_LINEAR.
	(expand_omp_simd): New function.
	(expand_omp_for): Handle #pragma omp simd.
	* gimplify.c (enum gimplify_omp_var_data): Add GOVD_LINEAR and
	GOVD_ALIGNED, add GOVD_LINEAR into GOVD_DATA_SHARE_CLASS.
	(enum omp_region_type): Add ORT_SIMD.
	(gimple_add_tmp_var, gimplify_var_or_parm_decl, omp_check_private,
	omp_firstprivatize_variable, omp_notice_variable): Handle ORT_SIMD
	like ORT_WORKSHARE.
	(omp_is_private): Likewise.  Add SIMD argument, tweak diagnostics
	and add extra errors in simd constructs.
	(gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses): Handle
	OMP_CLAUSE_LINEAR, OMP_CLAUSE_ALIGNED and OMP_CLAUSE_SAFELEN.
	(gimplify_adjust_omp_clauses_1): Handle GOVD_LASTPRIVATE and
	GOVD_ALIGNED.
	(gimplify_omp_for): Handle #pragma omp simd.

2013-04-10  Jakub Jelinek  <jakub@redhat.com>

	* builtin-types.def (DEF_FUNCTION_TYPE_8): Document.
	(BT_FN_VOID_OMPFN_PTR_UINT, BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG,
	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG): Remove.
	(BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT,
	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT,
	BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT): New.
	* gimplify.c (gimplify_scan_omp_clauses, gimplify_adjust_omp_clauses):
	Handle OMP_CLAUSE_PROC_BIND.
	* omp-builtins.def (BUILT_IN_GOMP_TASKGROUP_START,
	BUILT_IN_GOMP_TASKGROUP_END, BUILT_IN_GOMP_PARALLEL_LOOP_STATIC,
	BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC,
	BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED,
	BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME, BUILT_IN_GOMP_PARALLEL,
	BUILT_IN_GOMP_PARALLEL_SECTIONS): New built-ins.
	(BUILT_IN_GOMP_PARALLEL_LOOP_STATIC_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_DYNAMIC_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_GUIDED_START,
	BUILT_IN_GOMP_PARALLEL_LOOP_RUNTIME_START,
	BUILT_IN_GOMP_PARALLEL_START, BUILT_IN_GOMP_PARALLEL_END,
	BUILT_IN_GOMP_PARALLEL_SECTIONS_START): Remove.
	* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE_PROC_BIND.
	(expand_parallel_call): Expand #pragma omp parallel* as
	calls to the new GOMP_parallel_* APIs without _start at the end,
	instead of GOMP_parallel_*_start followed by fn.omp_fn.N call,
	followed by GOMP_parallel_end.  Handle OMP_CLAUSE_PROC_BIND.
	* tree-ssa-alias.c (ref_maybe_used_by_call_p_1,
	call_may_clobber_ref_p_1): Handle BUILT_IN_GOMP_TASKGROUP_END
	instead of BUILT_IN_GOMP_PARALLEL_END.

2013-03-27  Jakub Jelinek  <jakub@redhat.com>

	* gimple-pretty-print.c (dump_gimple_omp_for): Handle different
	GIMPLE_OMP_FOR kinds.
	* tree.def (OMP_SIMD, OMP_FOR_SIMD, OMP_DISTRIBUTE): New tree codes.
	* gimple.h (enum gf_mask): Add GF_OMP_FOR_KIND_MASK,
	GF_OMP_FOR_KIND_FOR, GF_OMP_FOR_KIND_SIMD, GF_OMP_FOR_KIND_FOR_SIMD
	and GF_OMP_FOR_KIND_DISTRIBUTE.
	(gimple_omp_for_kind, gimple_omp_for_set_kind): New inline functions.
	* gimplify.c (is_gimple_stmt, gimplify_omp_for, gimplify_expr): Handle
	OMP_SIMD, OMP_FOR_SIMD and OMP_DISTRIBUTE.
	* tree.c (omp_clause_num_ops, omp_clause_code_name, walk_tree_1):
	Handle new OpenMP 4.0 clauses.
	* tree-pretty-print.c (dump_omp_clause): Likewise.
	(dump_generic_node): Handle OMP_SIMD, OMP_FOR_SIMD and OMP_DISTRIBUTE.
	* tree.h (enum omp_clause_code): Add OMP_CLAUSE_LINEAR,
	OMP_CLAUSE_ALIGNED, OMP_CLAUSE_DEPEND, OMP_CLAUSE_FROM, OMP_CLAUSE_TO,
	OMP_CLAUSE_UNIFORM, OMP_CLAUSE_MAP, OMP_CLAUSE_DEVICE,
	OMP_CLAUSE_DIST_SCHEDULE, OMP_CLAUSE_INBRANCH, OMP_CLAUSE_NOTINBRANCH,
	OMP_CLAUSE_NUM_TEAMS, OMP_CLAUSE_PROC_BIND, OMP_CLAUSE_SAFELEN,
	OMP_CLAUSE_SIMDLEN, OMP_CLAUSE_FOR, OMP_CLAUSE_PARALLEL,
	OMP_CLAUSE_SECTIONS and OMP_CLAUSE_TASKGROUP.
	(OMP_LOOP_CHECK): Define.
	(OMP_FOR_BODY, OMP_FOR_CLAUSES, OMP_FOR_INIT, OMP_FOR_COND,
	OMP_FOR_INCR, OMP_FOR_PRE_BODY): Use OMP_LOOP_CHECK instead of
	OMP_FOR_CHECK.
	(OMP_CLAUSE_DECL): Extend check range up to OMP_CLAUSE_MAP.
	(OMP_CLAUSE_LINEAR_STEP, OMP_CLAUSE_ALIGNED_ALIGNMENT,
	OMP_CLAUSE_NUM_TEAMS_EXPR, OMP_CLAUSE_DEVICE_ID,
	OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR, OMP_CLAUSE_SAFELEN_EXPR,
	OMP_CLAUSE_SIMDLEN_EXPR): Define.
	(enum omp_clause_depend_kind, enum omp_clause_map_kind,
	enum omp_clause_proc_bind_kind): New enums.
	(OMP_CLAUSE_DEPEND_KIND, OMP_CLAUSE_MAP_KIND,
	OMP_CLAUSE_PROC_BIND_KIND): Define.
	(struct tree_omp_clause): Add subcode.depend_kind, subcode.map_kind
	and subcode.proc_bind_kind.
	(find_omp_clause): New prototype.
	* omp-builtins.def (BUILT_IN_GOMP_CANCEL,
	BUILT_IN_GOMP_CANCELLATION_POINT): New built-ins.
	* tree-flow.h (find_omp_clause): Remove prototype.

Copyright (C) 2013 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.