gcc/gcc
Jakub Jelinek a68ab35173 c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805.
* c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to
	200805.
	* langhooks.h (struct lang_hooks_for_decls): Add omp_finish_clause.
	Add omp_private_outer_ref hook, add another argument to
	omp_clause_default_ctor hook.
	* langhooks-def.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
	(LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
	(LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Change to
	hook_tree_tree_tree_tree_null.
	(LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_FINISH_CLAUSE and
	LANG_HOOKS_OMP_PRIVATE_OUTER_REF.
	* hooks.c (hook_tree_tree_tree_tree_null): New function.
	* hooks.h (hook_tree_tree_tree_tree_null): New prototype.
	* tree.def (OMP_TASK): New tree code.
	* tree.h (OMP_TASK_COPYFN, OMP_TASK_ARG_SIZE, OMP_TASK_ARG_ALIGN,
	OMP_CLAUSE_PRIVATE_OUTER_REF, OMP_CLAUSE_LASTPRIVATE_STMT,
	OMP_CLAUSE_COLLAPSE_ITERVAR, OMP_CLAUSE_COLLAPSE_COUNT,
	OMP_TASKREG_CHECK, OMP_TASKREG_BODY, OMP_TASKREG_CLAUSES,
	OMP_TASKREG_FN, OMP_TASKREG_DATA_ARG, OMP_TASK_BODY,
	OMP_TASK_CLAUSES, OMP_TASK_FN, OMP_TASK_DATA_ARG,
	OMP_CLAUSE_COLLAPSE_EXPR): Define.
	(enum omp_clause_default_kind): Add OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
	(OMP_DIRECTIVE_P): Add OMP_TASK.
	(OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): New clause codes.
	(OMP_CLAUSE_SCHEDULE_AUTO): New schedule kind.
	* tree.c (omp_clause_code_name): Add OMP_CLAUSE_COLLAPSE
	and OMP_CLAUSE_UNTIED entries.
	(omp_clause_num_ops): Likewise.  Increase OMP_CLAUSE_LASTPRIVATE
	num_ops to 2.
	(walk_tree_1): Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
	Walk OMP_CLAUSE_LASTPRIVATE_STMT.
	* tree-pretty-print.c (dump_omp_clause): Handle
	OMP_CLAUSE_SCHEDULE_AUTO, OMP_CLAUSE_UNTIED, OMP_CLAUSE_COLLAPSE,
	OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.
	(dump_generic_node): Handle OMP_TASK and collapsed OMP_FOR loops.
	* c-omp.c (c_finish_omp_for): Allow pointer iterators.  Remove
	warning about unsigned iterators.  Change decl/init/cond/incr
	arguments to TREE_VECs, check arguments for all collapsed loops.
	(c_finish_omp_taskwait): New function.
	(c_split_parallel_clauses): Put OMP_CLAUSE_COLLAPSE clause to
	ws_clauses.
	* c-parser.c (c_parser_omp_for_loop): Parse collapsed loops.  Call
	default_function_array_conversion on init.  Add par_clauses argument.
	If decl is present in parallel's lastprivate clause, change it to
	shared and add lastprivate clause for decl to OMP_FOR_CLAUSES.
	Add clauses argument, on success set OMP_FOR_CLAUSES to it.  Look up
	collapse count in clauses.
	(c_parser_omp_for, c_parser_omp_parallel): Adjust
	c_parser_omp_for_loop callers.
	(OMP_FOR_CLAUSE_MASK): Add 1 << PRAGMA_OMP_CLAUSE_COLLAPSE.
	(c_parser_pragma): Handle PRAGMA_OMP_TASKWAIT.
	(c_parser_omp_clause_name): Handle collapse and untied clauses.
	(c_parser_omp_clause_collapse, c_parser_omp_clause_untied): New
	functions.
	(c_parser_omp_clause_schedule): Handle schedule(auto).
	Include correct location in the error message.
	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
	and PRAGMA_OMP_CLAUSE_UNTIED.
	(OMP_TASK_CLAUSE_MASK): Define.
	(c_parser_omp_task, c_parser_omp_taskwait): New functions.
	(c_parser_omp_construct): Handle PRAGMA_OMP_TASK.
	* tree-nested.c (convert_nonlocal_omp_clauses,
	convert_local_omp_clauses): Handle OMP_CLAUSE_LASTPRIVATE_STMT,
	OMP_CLAUSE_REDUCTION_INIT, OMP_CLAUSE_REDUCTION_MERGE,
	OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
	Don't handle TREE_STATIC or DECL_EXTERNAL VAR_DECLs in
	OMP_CLAUSE_DECL.
	(conver_nonlocal_reference, convert_local_reference,
	convert_call_expr): Handle OMP_TASK the same as OMP_PARALLEL.  Use
	OMP_TASKREG_* macros rather than OMP_PARALLEL_*.
	(walk_omp_for): Adjust for OMP_FOR_{INIT,COND,INCR} changes.
	* tree-gimple.c (is_gimple_stmt): Handle OMP_TASK.
	* c-tree.h (c_begin_omp_task, c_finish_omp_task): New prototypes.
	* c-pragma.h (PRAGMA_OMP_TASK, PRAGMA_OMP_TASKWAIT): New.
	(PRAGMA_OMP_CLAUSE_COLLAPSE, PRAGMA_OMP_CLAUSE_UNTIED): New.
	* c-typeck.c (c_begin_omp_task, c_finish_omp_task): New functions.
	(c_finish_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
	OMP_CLAUSE_UNTIED.
	* c-pragma.c (init_pragma): Init omp task and omp taskwait pragmas.
	* c-common.h (c_finish_omp_taskwait): New prototype.
	* gimple-low.c (lower_stmt): Handle OMP_TASK.
	* tree-parloops.c (create_parallel_loop): Create 1 entry
	vectors for OMP_FOR_{INIT,COND,INCR}.
	* tree-cfg.c (remove_useless_stmts_1): Handle OMP_* containers.
	(make_edges): Handle OMP_TASK.
	* tree-ssa-operands.c (get_expr_operands): Handle collapsed OMP_FOR
	loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
	* tree-inline.c (estimate_num_insns_1): Handle OMP_TASK.
	* builtin-types.def (BT_PTR_ULONGLONG, BT_PTR_FN_VOID_PTR_PTR,
	BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
	BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
	BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
	* omp-builtins.def (BUILT_IN_GOMP_TASK, BUILT_IN_GOMP_TASKWAIT,
	BUILT_IN_GOMP_LOOP_ULL_STATIC_START,
	BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_START,
	BUILT_IN_GOMP_LOOP_ULL_GUIDED_START,
	BUILT_IN_GOMP_LOOP_ULL_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_START,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_START,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_START,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_START,
	BUILT_IN_GOMP_LOOP_ULL_STATIC_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_DYNAMIC_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_GUIDED_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_RUNTIME_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_STATIC_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_DYNAMIC_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_GUIDED_NEXT,
	BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): New builtins.
	* gimplify.c (gimplify_omp_for): Allow pointer type for decl,
	handle POINTER_PLUS_EXPR.  If loop counter has been replaced and
	original iterator is present in lastprivate clause or if
	collapse > 1, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle collapsed
	OMP_FOR loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
	(gimplify_expr): Handle OMP_SECTIONS_SWITCH and OMP_TASK.
	(enum gimplify_omp_var_data): Add GOVD_PRIVATE_OUTER_REF.
	(omp_notice_variable): Set GOVD_PRIVATE_OUTER_REF if needed,
	if it is set, lookup var in outer contexts too.  Handle
	OMP_CLAUSE_DEFAULT_FIRSTPRIVATE.  Handle vars that are supposed
	to be implicitly determined firstprivate for task regions.
	(gimplify_scan_omp_clauses): Set GOVD_PRIVATE_OUTER_REF if needed,
	if it is set, lookup var in outer contexts too.  Set
	OMP_CLAUSE_PRIVATE_OUTER_REF if GOVD_PRIVATE_OUTER_REF is set.
	Handle OMP_CLAUSE_LASTPRIVATE_STMT, OMP_CLAUSE_COLLAPSE and
	OMP_CLAUSE_UNTIED.  Take region_type as last argument
	instead of in_parallel and in_combined_parallel.
	(gimplify_omp_parallel, gimplify_omp_for, gimplify_omp_workshare):
	Adjust callers.
	(gimplify_adjust_omp_clauses_1): Set OMP_CLAUSE_PRIVATE_OUTER_REF if
	GOVD_PRIVATE_OUTER_REF is set.  Call omp_finish_clause
	langhook.
	(new_omp_context): Set default_kind to
	OMP_CLAUSE_DEFAULT_UNSPECIFIED for OMP_TASK regions.
	(omp_region_type): New enum.
	(struct gimplify_omp_ctx): Remove is_parallel and is_combined_parallel
	fields, add region_type.
	(new_omp_context): Take region_type as argument instead of is_parallel
	and is_combined_parallel.
	(gimple_add_tmp_var, omp_firstprivatize_variable, omp_notice_variable,
	omp_is_private, omp_check_private): Adjust ctx->is_parallel and
	ctx->is_combined_parallel checks.
	(gimplify_omp_task): New function.
	(gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
	OMP_CLAUSE_UNTIED.
	* omp-low.c (extract_omp_for_data): Use schedule(static)
	for schedule(auto).  Handle pointer and unsigned iterators.
	Compute fd->iter_type.  Handle POINTER_PLUS_EXPR increments.
	Add loops argument.  Extract data for collapsed OMP_FOR loops.
	(expand_parallel_call): Assert sched_kind isn't auto,
	map runtime schedule to index 3.
	(struct omp_for_data_loop): New type.
	(struct omp_for_data): Remove v, n1, n2, step, cond_code fields.
	Add loop, loops, collapse and iter_type fields.
	(workshare_safe_to_combine_p): Disallow combined for if
	iter_type is unsigned long long.  Don't combine collapse > 1 loops
	unless all bounds and steps are constant.  Adjust extract_omp_for_data
	caller.
	(expand_omp_for_generic): Handle pointer, unsigned and long long
	iterators.  Handle collapsed OMP_FOR loops.  Adjust
	for struct omp_for_data changes.  If libgomp function doesn't return
	boolean_type_node, add comparison of the return value with 0.
	(expand_omp_for_static_nochunk, expand_omp_for_static_chunk): Handle
	pointer, unsigned and long long iterators.  Adjust for struct
	omp_for_data changes.
	(expand_omp_for): Assert sched_kind isn't auto, map runtime schedule
	to index 3.  Use GOMP_loop_ull*{start,next} if iter_type is
	unsigned long long.  Allocate loops array, pass it to
	extract_omp_for_data.  For collapse > 1 loops use always
	expand_omp_for_generic.
	(omp_context): Add sfield_map and srecord_type fields.
	(is_task_ctx, lookup_sfield): New functions.
	(use_pointer_for_field): Use is_task_ctx helper.  Change first
	argument's type from const_tree to tree.  Clarify comment.
	In OMP_TASK disallow copy-in/out sharing.
	(build_sender_ref): Call lookup_sfield instead of lookup_field.
	(install_var_field): Add mask argument.  Populate both record_type
	and srecord_type if needed.
	(delete_omp_context): Destroy sfield_map, clear DECL_ABSTRACT_ORIGIN
	in srecord_type.
	(fixup_child_record_type): Also remap FIELD_DECL's DECL_SIZE{,_UNIT}
	and DECL_FIELD_OFFSET.
	(scan_sharing_clauses): Adjust install_var_field callers.  For
	firstprivate clauses on explicit tasks allocate the var by value in
	record_type unconditionally, rather than by reference.
	Handle OMP_CLAUSE_PRIVATE_OUTER_REF.  Scan OMP_CLAUSE_LASTPRIVATE_STMT.
	Use is_taskreg_ctx instead of is_parallel_ctx.
	Handle OMP_CLAUSE_COLLAPSE and OMP_CLAUSE_UNTIED.
	(create_omp_child_function_name): Add task_copy argument, use
	*_omp_cpyfn* names if it is true.
	(create_omp_child_function): Add task_copy argument, if true create
	*_omp_cpyfn* helper function.
	(scan_omp_parallel): Adjust create_omp_child_function callers.
	Rename parallel_nesting_level to taskreg_nesting_level.
	(scan_omp_task): New function.
	(lower_rec_input_clauses): Don't run constructors for firstprivate
	explicit task vars which are initialized by *_omp_cpyfn*.  
	Pass outer var ref to omp_clause_default_ctor hook if
	OMP_CLAUSE_PRIVATE_OUTER_REF or OMP_CLAUSE_LASTPRIVATE.
	Replace OMP_CLAUSE_REDUCTION_PLACEHOLDER decls in
	OMP_CLAUSE_REDUCTION_INIT.
	(lower_send_clauses): Clear DECL_ABSTRACT_ORIGIN if in task to
	avoid duplicate setting of fields.  Handle
	OMP_CLAUSE_PRIVATE_OUTER_REF.
	(lower_send_shared_vars): Use srecord_type if non-NULL.  Don't
	copy-out if TREE_READONLY, only copy-in.
	(expand_task_copyfn): New function.
	(expand_task_call): New function.
	(struct omp_taskcopy_context): New type.
	(task_copyfn_copy_decl, task_copyfn_remap_type, create_task_copyfn):
	New functions.
	(lower_omp_parallel): Rename to...
	(lower_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
	Call create_task_copyfn if srecord_type is needed.  Adjust
	sender_decl type.
	(task_shared_vars): New variable.
	(check_omp_nesting_restrictions): Warn if work-sharing,
	barrier, master or ordered region is closely nested inside OMP_TASK.
	Add warnings for barrier if closely nested inside of work-sharing,
	ordered, or master region.
	(scan_omp_1): Call check_omp_nesting_restrictions even for
	GOMP_barrier calls.  Rename parallel_nesting_level to
	taskreg_nesting_level.  Handle OMP_TASK.
	(lower_lastprivate_clauses): Even if some lastprivate is found on a
	work-sharing construct, continue looking for them on parent parallel
	construct.
	(lower_omp_for_lastprivate): Add lastprivate clauses
	to the beginning of dlist rather than end.  Adjust for struct
	omp_for_data changes.
	(lower_omp_for): Add rec input clauses before OMP_FOR_PRE_BODY,
	not after it.  Handle collapsed OMP_FOR loops, adjust for
	OMP_FOR_{INIT,COND,INCR} changes, adjust extract_omp_for_data
	caller.
	(get_ws_args_for): Adjust extract_omp_for_data caller.
	(scan_omp_for): Handle collapsed OMP_FOR
	loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.
	(lower_omp_single_simple): If libgomp function doesn't return
	boolean_type_node, add comparison of the return value with 0.
	(diagnose_sb_1, diagnose_sb_2): Handle collapsed OMP_FOR
	loops, adjust for OMP_FOR_{INIT,COND,INCR} changes.  Handle OMP_TASK.
	(parallel_nesting_level): Rename to...
	(taskreg_nesting_level): ... this.
	(is_taskreg_ctx): New function.
	(build_outer_var_ref, omp_copy_decl): Use is_taskreg_ctx instead
	of is_parallel_ctx.
	(execute_lower_omp): Rename parallel_nesting_level to
	taskreg_nesting_level.
	(expand_omp_parallel): Rename to...
	(expand_omp_taskreg): ... this.  Use OMP_TASKREG_* macros where needed.
	Call omp_task_call for OMP_TASK regions.
	(expand_omp): Adjust caller, handle OMP_TASK.
	(lower_omp_1): Adjust lower_omp_taskreg caller, handle OMP_TASK.

	* bitmap.c (bitmap_default_obstack_depth): New variable.
	(bitmap_obstack_initialize, bitmap_obstack_release): Do nothing
	if argument is NULL and bitmap_default_obstack is already initialized.
	* ipa-struct-reorg.c (do_reorg_1): Call bitmap_obstack_release
	at the end.
	* matrix-reorg.c (matrix_reorg): Likewise.
cp/
	* cp-tree.h (cxx_omp_finish_clause, cxx_omp_create_clause_info,
	dependent_omp_for_p, begin_omp_task, finish_omp_task,
	finish_omp_taskwait): New prototypes.
	(cxx_omp_clause_default_ctor): Add outer argument.
	(finish_omp_for): Add new clauses argument.
	* cp-gimplify.c (cxx_omp_finish_clause): New function.
	(cxx_omp_predetermined_sharing): Moved from semantics.c, rewritten.
	(cxx_omp_clause_default_ctor): Add outer argument.
	(cp_genericize_r): Walk OMP_CLAUSE_LASTPRIVATE_STMT.
	* cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_CLAUSE): Define.
	* parser.c (cp_parser_omp_for_loop): Parse collapsed for loops.
	Add par_clauses argument.  If decl is present in parallel's
	lastprivate clause, change that clause to shared and add
	a lastprivate clause for decl to OMP_FOR_CLAUSES.
	Fix wording of error messages.  Adjust finish_omp_for caller.
	Add clauses argument.  Parse loops with random access iterators.
	(cp_parser_omp_clause_collapse, cp_parser_omp_clause_untied): New
	functions.
	(cp_parser_omp_for, cp_parser_omp_parallel): Adjust
	cp_parser_omp_for_loop callers.
	(cp_parser_omp_for_cond, cp_parser_omp_for_incr): New helper
	functions.
	(cp_parser_omp_clause_name): Handle collapse and untied
	clauses.
	(cp_parser_omp_clause_schedule): Handle auto schedule.
	(cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_COLLAPSE
	and PRAGMA_OMP_CLAUSE_UNTIED.
	(OMP_FOR_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_COLLAPSE.
	(OMP_TASK_CLAUSE_MASK): Define.
	(cp_parser_omp_task, cp_parser_omp_taskwait): New functions.
	(cp_parser_omp_construct): Handle PRAGMA_OMP_TASK.
	(cp_parser_pragma): Handle PRAGMA_OMP_TASK and
	PRAGMA_OMP_TASKWAIT.
	* pt.c (tsubst_omp_clauses): Handle OMP_CLAUSE_COLLAPSE and
	OMP_CLAUSE_UNTIED.  Handle OMP_CLAUSE_LASTPRIVATE_STMT.
	(tsubst_omp_for_iterator): New function.
	(dependent_omp_for_p): New function.
	(tsubst_expr) <case OMP_FOR>: Use it.  Handle collapsed OMP_FOR
	loops.  Adjust finish_omp_for caller.  Handle loops with random
	access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR} changes.
	(tsubst_expr): Handle OMP_TASK.
	* semantics.c (cxx_omp_create_clause_info): New function.
	(finish_omp_clauses): Call it.  Handle OMP_CLAUSE_UNTIED and
	OMP_CLAUSE_COLLAPSE.
	(cxx_omp_predetermined_sharing): Removed.
	* semantics.c (finish_omp_for): Allow pointer iterators.  Use
	handle_omp_for_class_iterator and dependent_omp_for_p.  Handle
	collapsed for loops.  Adjust c_finish_omp_for caller.  Add new
	clauses argument.  Fix check for type dependent cond or incr.
	Set OMP_FOR_CLAUSES to clauses.  Use cp_convert instead of
	fold_convert to convert incr amount to difference_type.  Only
	fold if not in template.  If decl is mentioned in lastprivate
	clause, set OMP_CLAUSE_LASTPRIVATE_STMT.  Handle loops with random
	access iterators.  Adjust for OMP_FOR_{INIT,COND,INCR}
	changes.
	(finish_omp_threadprivate): Allow static class members of the
	current class.
	(handle_omp_for_class_iterator, begin_omp_task, finish_omp_task,
	finish_omp_taskwait): New functions.

	* parser.c (cp_parser_binary_expression): Add prec argument.
	(cp_parser_assignment_expression): Adjust caller.
	* cp-tree.h (outer_curly_brace_block): New prototype.
	* decl.c (outer_curly_brace_block): No longer static.
fortran/
	* scanner.c (skip_free_comments, skip_fixed_comments): Handle tabs.
	* parse.c (next_free): Allow tab after !$omp.
	(decode_omp_directive): Handle !$omp task, !$omp taskwait
	and !$omp end task.
	(case_executable): Add ST_OMP_TASKWAIT.
	(case_exec_markers): Add ST_OMP_TASK.
	(gfc_ascii_statement): Handle ST_OMP_TASK, ST_OMP_END_TASK and
	ST_OMP_TASKWAIT.
	(parse_omp_structured_block, parse_executable): Handle ST_OMP_TASK.
	* gfortran.h (gfc_find_sym_in_expr): New prototype.
	(gfc_statement): Add ST_OMP_TASK, ST_OMP_END_TASK and ST_OMP_TASKWAIT.
	(gfc_omp_clauses): Add OMP_SCHED_AUTO to sched_kind,
	OMP_DEFAULT_FIRSTPRIVATE to default_sharing.  Add collapse and
	untied fields.
	(gfc_exec_op): Add EXEC_OMP_TASK and EXEC_OMP_TASKWAIT.
	* f95-lang.c (LANG_HOOKS_OMP_CLAUSE_COPY_CTOR,
	LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP, LANG_HOOKS_OMP_CLAUSE_DTOR,
	LANG_HOOKS_OMP_PRIVATE_OUTER_REF): Define.
	* trans.h (gfc_omp_clause_default_ctor): Add another argument.
	(gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op,
	gfc_omp_clause_dtor, gfc_omp_private_outer_ref): New prototypes.
	* types.def (BT_ULONGLONG, BT_PTR_ULONGLONG,
	BT_FN_BOOL_ULONGLONGPTR_ULONGLONGPTR,
	BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULLPTR_ULLPTR,
	BT_FN_BOOL_BOOL_ULL_ULL_ULL_ULL_ULLPTR_ULLPTR,
	BT_FN_VOID_PTR_PTR, BT_PTR_FN_VOID_PTR_PTR,
	BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): New.
	(BT_BOOL): Use integer type with BOOL_TYPE_SIZE rather
	than boolean_type_node.
	* dump-parse-tree.c (gfc_show_omp_node): Handle EXEC_OMP_TASK,
	EXEC_OMP_TASKWAIT, OMP_SCHED_AUTO, OMP_DEFAULT_FIRSTPRIVATE,
	untied and collapse clauses.
	(gfc_show_code_node): Handle EXEC_OMP_TASK and EXEC_OMP_TASKWAIT.
	* trans.c (gfc_trans_code): Handle EXEC_OMP_TASK and
	EXEC_OMP_TASKWAIT.
	* st.c (gfc_free_statement): Likewise.
	* resolve.c (gfc_resolve_blocks, resolve_code): Likewise.
	(find_sym_in_expr): Rename to...
	(gfc_find_sym_in_expr): ... this.  No longer static.
	(resolve_allocate_expr, resolve_ordinary_assign): Adjust caller.
	* match.h (gfc_match_omp_task, gfc_match_omp_taskwait): New
	prototypes.
	* openmp.c (resolve_omp_clauses): Allow allocatable arrays in
	firstprivate, lastprivate, reduction, copyprivate and copyin
	clauses.
	(omp_current_do_code): Made static.
	(omp_current_do_collapse): New variable.
	(gfc_resolve_omp_do_blocks): Compute omp_current_do_collapse,
	clear omp_current_do_code and omp_current_do_collapse on return.
	(gfc_resolve_do_iterator): Handle collapsed do loops.
	(resolve_omp_do): Likewise, diagnose errorneous collapsed do loops.
	(OMP_CLAUSE_COLLAPSE, OMP_CLAUSE_UNTIED): Define.
	(gfc_match_omp_clauses): Handle default (firstprivate),
	schedule (auto), untied and collapse (n) clauses.
	(OMP_DO_CLAUSES): Add OMP_CLAUSE_COLLAPSE.
	(OMP_TASK_CLAUSES): Define.
	(gfc_match_omp_task, gfc_match_omp_taskwait): New functions.
	* trans-openmp.c (gfc_omp_private_outer_ref): New function.
	(gfc_omp_clause_default_ctor): Add outer argument.  For allocatable
	arrays allocate them with the bounds of the outer var if outer
	var is allocated.
	(gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op,
	gfc_omp_clause_dtor): New functions.
	(gfc_trans_omp_array_reduction): If decl is allocatable array,
	allocate it with outer var's bounds in OMP_CLAUSE_REDUCTION_INIT
	and deallocate it in OMP_CLAUSE_REDUCTION_MERGE.
	(gfc_omp_predetermined_sharing): Return OMP_CLAUSE_DEFAULT_SHARED
	for assumed-size arrays.
	(gfc_trans_omp_do): Add par_clauses argument.  If dovar is
	present in lastprivate clause and do loop isn't simple,
	set OMP_CLAUSE_LASTPRIVATE_STMT.  If dovar is present in
	parallel's lastprivate clause, change it to shared and add
	lastprivate clause to OMP_FOR_CLAUSES.  Handle collapsed do loops.
	(gfc_trans_omp_directive): Adjust gfc_trans_omp_do callers.
	(gfc_trans_omp_parallel_do): Likewise.  Move collapse clause to
	OMP_FOR from OMP_PARALLEL.
	(gfc_trans_omp_clauses): Handle OMP_SCHED_AUTO,
	OMP_DEFAULT_FIRSTPRIVATE, untied and collapse clauses.
	(gfc_trans_omp_task, gfc_trans_omp_taskwait): New functions.
	(gfc_trans_omp_directive): Handle EXEC_OMP_TASK and
	EXEC_OMP_TASKWAIT.
gcc/testsuite/
	* gcc.dg/gomp/collapse-1.c: New test.
	* gcc.dg/gomp/nesting-1.c: New test.
	* g++.dg/gomp/task-1.C: New test.
	* g++.dg/gomp/predetermined-1.C: New test.
	* g++.dg/gomp/tls-4.C: New test.
	* gfortran.dg/gomp/collapse1.f90: New test.
	* gfortran.dg/gomp/sharing-3.f90: New test.
	* gcc.dg/gomp/pr27499.c (foo): Remove is unsigned dg-warning.
	* g++.dg/gomp/pr27499.C (foo): Likewise.
	* g++.dg/gomp/for-16.C (foo): Likewise.
	* g++.dg/gomp/tls-3.C: Remove dg-error, add S::s definition.
	* g++.dg/gomp/pr34607.C: Adjust dg-error location.
	* g++.dg/gomp/for-16.C (foo): Add a new dg-error.
	* gcc.dg/gomp/appendix-a/a.35.4.c: Add dg-warning.
	* gcc.dg/gomp/appendix-a/a.35.6.c: Likewise.
	* gfortran.dg/gomp/appendix-a/a.35.4.f90: Likewise.
	* gfortran.dg/gomp/appendix-a/a.35.6.f90: Likewise.
	* gfortran.dg/gomp/omp_parse1.f90: Remove !$omp tab test.
	* gfortran.dg/gomp/appendix-a/a.33.4.f90: Remove dg-error
	about allocatable array.
	* gfortran.dg/gomp/reduction1.f90: Likewise.
libgomp/
	* configure.ac (LIBGOMP_GNU_SYMBOL_VERSIONING): New AC_DEFINE.
	Substitute also OMP_*LOCK_25*.
	* configure: Regenerated.
	* config.h.in: Regenerated.
	* Makefile.am (libgomp_la_SOURCES): Add loop_ull.c, iter_ull.c,
	ptrlock.c and task.c.
	* Makefile.in: Regenerated.
	* testsuite/Makefile.in: Regenerated.
	* task.c: New file.
	* loop_ull.c: New file.
	* iter_ull.c: New file.
	* libgomp.h: Include ptrlock.h.
	(enum gomp_task_kind): New type.
	(struct gomp_team): Add task_lock, task_queue, task_count,
	task_running_count, single_count fields.  Add
	work_share_list_free_lock ifndef HAVE_SYNC_BUILTINS.
	Remove work_share_lock, generation_mask,
	oldest_live_gen, num_live_gen and init_work_shares fields, add
	work work_share_list_alloc, work_share_list_free and work_share_chunk
	fields.  Change work_shares from pointer to pointers into an array.
	Change ordered_release field into gomp_sem_t ** from flexible array
	member.  Add implicit_task and initial_work_shares fields.
	Move close to the end of the struct.
	(struct gomp_team_state): Add single_count, last_work_share,
	active_level and level fields, remove work_share_generation.
	(gomp_barrier_handle_tasks): New prototype.
	(gomp_finish_task): New inline function.
	(struct gomp_work_share): Move chunk_size, end, incr into
	transparent union/struct, add chunk_size_ull, end_ll, incr_ll and
	next_ll fields.  Reshuffle fields.  Add next_alloc,
	next_ws, next_free and inline_ordered_team_ids fields, change
	ordered_team_ids into pointer from flexible array member.
	Add mode field.  Put lock and next into a different cache line
	from most of the write-once fields.
	(gomp_iter_ull_static_next, gomp_iter_ull_dynamic_next_locked,
	gomp_iter_ull_guided_next_locked, gomp_iter_ull_dynamic_next,
	gomp_iter_ull_guided_next): New prototypes.
	(gomp_new_icv): New prototype.
	(struct gomp_thread): Add thread_pool and task fields.
	(struct gomp_thread_pool): New type.
	(gomp_new_team): New prototype.
	(gomp_team_start): Change type of last argument.
	(gomp_new_work_share): Removed.
	(gomp_init_work_share, gomp_fini_work_share): New prototypes.
	(gomp_work_share_init_done): New static inline.
	(gomp_throttled_spin_count_var, gomp_available_cpus,
	gomp_managed_threads): New extern decls.
	(gomp_init_task): New prototype.
	(gomp_spin_count_var): New extern var decl.
	(LIBGOMP_GNU_SYMBOL_VERSIONING): Undef if no visibility
	or no alias support, or if not PIC.
	(gomp_init_lock_30, gomp_destroy_lock_30, gomp_set_lock_30,
	gomp_unset_lock_30, gomp_test_lock_30, gomp_init_nest_lock_30,
	gomp_destroy_nest_lock_30, gomp_set_nest_lock_30,
	gomp_unset_nest_lock_30, gomp_test_nest_lock_30, gomp_init_lock_25,
	gomp_destroy_lock_25, gomp_set_lock_25, gomp_unset_lock_25,
	gomp_test_lock_25, gomp_init_nest_lock_25, gomp_destroy_nest_lock_25,
	gomp_set_nest_lock_25, gomp_unset_nest_lock_25,
	gomp_test_nest_lock_25): New prototypes.
	(omp_lock_symver, strong_alias): Define.
	(gomp_remaining_threads_count, gomp_remaining_threads_lock): New
	decls.
	(gomp_end_task): New.
	(struct gomp_task_icv, gomp_global_icv): New.
	(gomp_thread_limit_var, gomp_max_active_levels_var): New.
	(struct gomp_task): New.
	(gomp_nthreads_var, gomp_dyn_var, gomp_nest_var,
	gomp_run_sched_var, gomp_run_sched_chunk): Remove.
	(gomp_icv): New.
	(gomp_schedule_type): Reorder enum to match
	omp_sched_t.
	* team.c (struct gomp_thread_start_data): Add thread_pool and task
	fields.
	(gomp_thread_start): Add gomp_team_barrier_wait call.
	For non-nested case remove clearing of docked thread thr fields.
	Use pool fields instead of global gomp_* variables.  Use
	gomp_barrier_wait_last when needed.  Initialize ts.active_level.
	Create tasks for each member thread.
	(free_team): Only destroy team barrier, task_lock here and free it.
	(gomp_free_thread): Free last_team if non-NULL.
	(gomp_team_end): Call gomp_team_barrier_wait instead of
	gomp_barrier_wait.  For nested case call one extra
	gomp_barrier_wait.  Move here some destruction from free_team.
	Call free_team on pool->last_team if any, rather than freeing
	current team.  Destroy work_share_list_free_lock ifndef
	HAVE_SYNC_BUILTINS.
	(gomp_new_icv): New function.
	(gomp_threads, gomp_threads_size, gomp_threads_used,
	gomp_threads_dock): Removed.
	(gomp_thread_destructor): New variable.
	(gomp_new_thread_pool, gomp_free_pool_helper, gomp_free_thread): New
	functions.
	(gomp_team_start): Create new pool if current thread doesn't have
	one.  Use pool fields instead of global gomp_* variables. 
	Initialize thread_pool field for new threads.  Clear single_count.
	Change last argument from ws to team, don't create
	new team, set ts.work_share to &team->work_shares[0] and clear
	ts.last_work_share.  Don't clear ts.work_share_generation.
	If number of threads changed, adjust atomically gomp_managed_threads.
	Use gomp_init_task instead of gomp_new_task,
	set thr->task to the corresponding implicit_task array entry.
	Create tasks for each member thread.  Initialize ts.level.
	(initialize_team): Call pthread_key_create on
	gomp_thread_destructor.
	(team_destructor): New function.
	(new_team): Removed.
	(gomp_new_team): New function.
	(free_team): Free gomp_work_share blocks chained through next_alloc,
	instead of freeing work_shares and destroying work_share_lock.
	(gomp_team_end): Call gomp_fini_work_share.  If number of threads
	changed, adjust atomically gomp_managed_threads.  Use gomp_end_task.
	* barrier.c (GOMP_barrier): Call gomp_team_barrier_wait instead
	of gomp_barrier_wait.
	* single.c (GOMP_single_copy_start): Call gomp_team_barrier_wait
	instead of gomp_barrier_wait.  Call gomp_work_share_init_done
	if gomp_work_share_start returned true.  Don't unlock ws->lock.
	(GOMP_single_copy_end): Call gomp_team_barrier_wait instead
	of gomp_barrier_wait.
	(GOMP_single_start): Rewritten if HAVE_SYNC_BUILTINS.  Call
	gomp_work_share_init_done if gomp_work_share_start returned true.
	Don't unlock ws->lock.
	* work.c: Include stddef.h.
	(free_work_share): Use work_share_list_free_lock instead
	of atomic chaining ifndef HAVE_SYNC_BUILTINS.  Add team argument.
	Call gomp_fini_work_share and then either free ws if orphaned, or
	put it into work_share_list_free list of the current team.
	(alloc_work_share, gomp_init_work_share, gomp_fini_work_share): New
	functions.
	(gomp_work_share_start, gomp_work_share_end,
	gomp_work_share_end_nowait): Rewritten.
	* omp_lib.f90.in Change some tabs to spaces to prevent warnings.
	(openmp_version): Set to 200805.
	(omp_sched_kind, omp_sched_static, omp_sched_dynamic,
	omp_sched_guided, omp_sched_auto): New parameters.
	(omp_set_schedule, omp_get_schedule, omp_get_thread_limit,
	omp_set_max_active_levels, omp_get_max_active_levels,
	omp_get_level, omp_get_ancestor_thread_num, omp_get_team_size,
	omp_get_active_level): New interfaces.
	* omp_lib.h.in (openmp_version): Set to 200805.
	(omp_sched_kind, omp_sched_static, omp_sched_dynamic,
	omp_sched_guided, omp_sched_auto): New parameters.
	(omp_set_schedule, omp_get_schedule, omp_get_thread_limit,
	omp_set_max_active_levels, omp_get_max_active_levels,
	omp_get_level, omp_get_ancestor_thread_num, omp_get_team_size,
	omp_get_active_level): New externals.
	* loop.c: Include limits.h.
	(GOMP_loop_runtime_next, GOMP_loop_ordered_runtime_next): Handle
	GFS_AUTO.
	(GOMP_loop_runtime_start, GOMP_loop_ordered_runtime_start):
	Likewise.  Use gomp_icv.
	(gomp_loop_static_start, gomp_loop_dynamic_start): Clear
	ts.static_trip here.
	(gomp_loop_static_start, gomp_loop_ordered_static_start): Call
	gomp_work_share_init_done after gomp_loop_init.  Don't unlock ws->lock.
	(gomp_loop_dynamic_start, gomp_loop_guided_start): Call
	gomp_work_share_init_done after gomp_loop_init.  If HAVE_SYNC_BUILTINS,
	don't unlock ws->lock, otherwise lock it.
	(gomp_loop_ordered_dynamic_start, gomp_loop_ordered_guided_start): Call
	gomp_work_share_init_done after gomp_loop_init.  Lock ws->lock.
	(gomp_parallel_loop_start): Call gomp_new_team instead of
	gomp_new_work_share.  Call gomp_loop_init on &team->work_shares[0].
	Adjust gomp_team_start caller.  Pass 0 as second argument to
	gomp_resolve_num_threads.
	(gomp_loop_init): For GFS_DYNAMIC, multiply ws->chunk_size by incr.
	If adding ws->chunk_size nthreads + 1 times after end won't
	overflow, set ws->mode to 1.
	* libgomp_g.h (GOMP_loop_ull_static_start, GOMP_loop_ull_dynamic_start,
	GOMP_loop_ull_guided_start, GOMP_loop_ull_runtime_start,
	GOMP_loop_ull_ordered_static_start,
	GOMP_loop_ull_ordered_dynamic_start,
	GOMP_loop_ull_ordered_guided_start,
	GOMP_loop_ull_ordered_runtime_start, GOMP_loop_ull_static_next,
	GOMP_loop_ull_dynamic_next, GOMP_loop_ull_guided_next,
	GOMP_loop_ull_runtime_next, GOMP_loop_ull_ordered_static_next,
	GOMP_loop_ull_ordered_dynamic_next, GOMP_loop_ull_ordered_guided_next,
	GOMP_loop_ull_ordered_runtime_next, GOMP_task, GOMP_taskwait): New
	prototypes.
	* libgomp.map: Export lock routines also @@OMP_2.0.
	(GOMP_loop_ordered_dynamic_first,
	GOMP_loop_ordered_guided_first, GOMP_loop_ordered_runtime_first,
	GOMP_loop_ordered_static_first): Remove.
	(GOMP_loop_ull_dynamic_next, GOMP_loop_ull_dynamic_start,
	GOMP_loop_ull_guided_next, GOMP_loop_ull_guided_start,
	GOMP_loop_ull_ordered_dynamic_next,
	GOMP_loop_ull_ordered_dynamic_start,
	GOMP_loop_ull_ordered_guided_next,
	GOMP_loop_ull_ordered_guided_start,
	GOMP_loop_ull_ordered_runtime_next,
	GOMP_loop_ull_ordered_runtime_start,
	GOMP_loop_ull_ordered_static_next,
	GOMP_loop_ull_ordered_static_start,
	GOMP_loop_ull_runtime_next, GOMP_loop_ull_runtime_start,
	GOMP_loop_ull_static_next, GOMP_loop_ull_static_start,
	GOMP_task, GOMP_taskwait): Export @@GOMP_2.0.
	(omp_set_schedule, omp_get_schedule,
	omp_get_thread_limit, omp_set_max_active_levels,
	omp_get_max_active_levels, omp_get_level,
	omp_get_ancestor_thread_num, omp_get_team_size, omp_get_active_level,
	omp_set_schedule_, omp_set_schedule_8_,
	omp_get_schedule_, omp_get_schedule_8_, omp_get_thread_limit_,
	omp_set_max_active_levels_, omp_set_max_active_levels_8_,
	omp_get_max_active_levels_, omp_get_level_,
	omp_get_ancestor_thread_num_, omp_get_ancestor_thread_num_8_,
	omp_get_team_size_, omp_get_team_size_8_, omp_get_active_level_):
	New exports @@OMP_3.0.
	* omp.h.in (omp_sched_t): New type.
	(omp_set_schedule, omp_get_schedule, omp_get_thread_limit,
	omp_set_max_active_levels, omp_get_max_active_levels,
	omp_get_level, omp_get_ancestor_thread_num, omp_get_team_size,
	omp_get_active_level): New prototypes.
	* env.c (gomp_spin_count_var, gomp_throttled_spin_count_var,
	gomp_available_cpus, gomp_managed_threads, gomp_max_active_levels_var,
	gomp_thread_limit_var, gomp_remaining_threads_count,
	gomp_remaining_threads_lock): New variables.
	(parse_spincount): New function.
	(initialize_env): Call gomp_init_num_threads unconditionally.
	Initialize gomp_available_cpus.  Call parse_spincount,
	initialize gomp_{,throttled_}spin_count_var
	depending on presence and value of OMP_WAIT_POLICY and
	GOMP_SPINCOUNT env vars.  Handle GOMP_BLOCKTIME env var.
	Handle OMP_WAIT_POLICY, OMP_MAX_ACTIVE_LEVELS,
	OMP_THREAD_LIMIT, OMP_STACKSIZE env vars.  Handle unit specification
	for GOMP_STACKSIZE.  Initialize gomp_remaining_threads_count and
	gomp_remaining_threads_lock if needed.  Use gomp_global_icv.
	(gomp_nthreads_var, gomp_dyn_var, gomp_nest_var,
	gomp_run_sched_var, gomp_run_sched_chunk): Remove.
	(gomp_global_icv): New.
	(parse_schedule): Use it.  Parse "auto".
	(omp_set_num_threads): Use gomp_icv.
	(omp_set_dynamic, omp_get_dynamic, omp_set_nested, omp_get_nested):
	Likewise.
	(omp_get_max_threads): Move from parallel.c.
	(omp_set_schedule, omp_get_schedule, omp_get_thread_limit,
	omp_set_max_active_levels, omp_get_max_active_levels): New functions,
	add ialias.
	(parse_stacksize, parse_wait_policy): New functions.
	* fortran.c: Rewrite lock wrappers, if symbol versioning provide
	both wrappers for compatibility and new locks.
	(omp_set_schedule, omp_get_schedule,
	omp_get_thread_limit, omp_set_max_active_levels,
	omp_get_max_active_levels, omp_get_level,
	omp_get_ancestor_thread_num, omp_get_team_size,
	omp_get_active_level): New ialias_redirect.
	(omp_set_schedule_, omp_set_schedule_8_,
	omp_get_schedule_, omp_get_schedule_8_, omp_get_thread_limit_,
	omp_set_max_active_levels_, omp_set_max_active_levels_8_,
	omp_get_max_active_levels_, omp_get_level_,
	omp_get_ancestor_thread_num_, omp_get_ancestor_thread_num_8_,
	omp_get_team_size_, omp_get_team_size_8_, omp_get_active_level_):
	New functions.
	* parallel.c: Include limits.h.
	(gomp_resolve_num_threads): Add count argument.  Rewritten.
	(GOMP_parallel_start): Call gomp_new_team and pass that as last
	argument to gomp_team_start.  Pass 0 as second argument to
	gomp_resolve_num_threads.
	(GOMP_parallel_end): Decrease gomp_remaining_threads_count
	if gomp_thread_limit_var != ULONG_MAX.
	(omp_in_parallel): Implement using ts.active_level.
	(omp_get_max_threads): Move to env.c.
	(omp_get_level, omp_get_ancestor_thread_num,
	omp_get_team_size, omp_get_active_level): New functions,
	add ialias.
	* sections.c (GOMP_sections_start): Call gomp_work_share_init_done
	after gomp_sections_init.  If HAVE_SYNC_BUILTINS, call
	gomp_iter_dynamic_next instead of the _locked variant and don't take
	lock around it, otherwise acquire it before calling
	gomp_iter_dynamic_next_locked.
	(GOMP_sections_next): If HAVE_SYNC_BUILTINS, call
	gomp_iter_dynamic_next instead of the _locked variant and don't take
	lock around it.
	(GOMP_parallel_sections_start): Call gomp_new_team instead of
	gomp_new_work_share.  Call gomp_sections_init on &team->work_shares[0].
	Adjust gomp_team_start caller.  Pass count as second argument to
	gomp_resolve_num_threads, don't adjust num_threads after the call.
	Use gomp_icv.
	* iter.c (gomp_iter_dynamic_next_locked): Don't multiply
	ws->chunk_size by incr.
	(gomp_iter_dynamic_next): Likewise.  If ws->mode, use more efficient
	code.
	* libgomp_f.h.in (omp_lock_25_arg_t, omp_nest_lock_25_arg_t): New
	types.
	(omp_lock_25_arg, omp_nest_lock_25_arg): New macros.
	(omp_check_defines): Check even the compat defines.
	* config/linux/ptrlock.c: New file.
	* config/linux/ptrlock.h: New file.
	* config/linux/wait.h: New file.
	* config/posix/ptrlock.c: New file.
	* config/posix/ptrlock.h: New file.
	* config/linux/bar.h (gomp_team_barrier_wait,
	gomp_team_barrier_wait_end, gomp_team_barrier_wake): New prototypes.
	(gomp_team_barrier_set_task_pending,
	gomp_team_barrier_clear_task_pending,
	gomp_team_barrier_set_waiting_for_tasks,
	gomp_team_barrier_waiting_for_tasks,
	gomp_team_barrier_done): New inlines.
	(gomp_barrier_t): Rewritten.
	(gomp_barrier_state_t): New typedef.
	(gomp_barrier_init, gomp_barrier_reinit, gomp_barrier_destroy,
	gomp_barrier_wait_start): Rewritten.
	(gomp_barrier_wait_end): Change second argument to
	gomp_barrier_state_t.
	(gomp_barrier_last_thread, gomp_barrier_wait_last): New static
	inlines.
	* config/linux/bar.c: Include wait.h instead of libgomp.h and
	futex.h.
	(gomp_barrier_wait_end): Rewritten.
	(gomp_team_barrier_wait, gomp_team_barrier_wait_end,
	gomp_team_barrier_wake, gomp_barrier_wait_last): New functions.
	* config/posix/bar.h (gomp_barrier_t): Add generation field.
	(gomp_barrier_state_t): New typedef.
	(gomp_team_barrier_wait,
	gomp_team_barrier_wait_end, gomp_team_barrier_wake): New prototypes.
	(gomp_barrier_wait_start): Or all but low 2 bits from generation
	into the return value.  Return gomp_barrier_state_t.
	(gomp_team_barrier_set_task_pending,
	gomp_team_barrier_clear_task_pending,
	gomp_team_barrier_set_waiting_for_tasks,
	gomp_team_barrier_waiting_for_tasks,
	gomp_team_barrier_done): New inlines.
	(gomp_barrier_wait_end): Change second argument to
	gomp_barrier_state_t.
	(gomp_barrier_last_thread, gomp_barrier_wait_last): New static
	inlines.
	* config/posix/bar.c (gomp_barrier_init): Clear generation field.
	(gomp_barrier_wait_end): Change second argument to
	gomp_barrier_state_t. 
	(gomp_team_barrier_wait, gomp_team_barrier_wait_end,
	gomp_team_barrier_wake): New functions.
	* config/linux/mutex.c: Include wait.h instead of libgomp.h and
	futex.h.
	(gomp_futex_wake, gomp_futex_wait): New variables.
	(gomp_mutex_lock_slow): Call do_wait instead of futex_wait.
	* config/linux/lock.c: Rewrite to make locks task owned,
	for backwards compatibility provide the old entrypoints
	if symbol versioning.  Include wait.h instead of libgomp.h and
	futex.h.
	(gomp_set_nest_lock_25): Call do_wait instead of futex_wait.
	* config/posix95/lock.c: Rewrite to make locks task owned,
	for backwards compatibility provide the old entrypoints
	if symbol versioning.
	* config/posix/lock.c: Rewrite to make locks task owned,
	for backwards compatibility provide the old entrypoints
	if symbol versioning.
	* config/linux/proc.c (gomp_init_num_threads): Use gomp_global_icv.
	(get_num_procs, gomp_dynamic_max_threads): Use gomp_icv.
	* config/posix/proc.c, config/mingw32/proc.c: Similarly.
	* config/linux/powerpc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(sys_futex0): Return error code.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/alpha/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/x86/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(sys_futex0): Return error code.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/s390/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(sys_futex0): Return error code.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/ia64/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(sys_futex0): Return error code.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/sparc/futex.h (FUTEX_WAIT, FUTEX_WAKE): Remove.
	(sys_futex0): Return error code.
	(futex_wake, futex_wait): If ENOSYS was returned, clear
	FUTEX_PRIVATE_FLAG in gomp_futex_wa{ke,it} and retry.
	(cpu_relax, atomic_write_barrier): New static inlines.
	* config/linux/sem.c: Include wait.h instead of libgomp.h and
	futex.h.
	(gomp_sem_wait_slow): Call do_wait instead of futex_wait.
	* config/linux/affinity.c: Assume HAVE_SYNC_BUILTINS.
	* config/linux/omp-lock.h (omp_lock_25_t, omp_nest_lock_25_t): New
	types.
	(omp_nest_lock_t): Change owner into void *, add lock field.
	* config/posix95/omp-lock.h: Include semaphore.h.
	(omp_lock_25_t, omp_nest_lock_25_t): New types.
	(omp_lock_t): Use sem_t instead of mutex if semaphores
	aren't broken.
	(omp_nest_lock_t): Likewise.  Change owner to void *.
	* config/posix/omp-lock.h: Include semaphore.h.
	(omp_lock_25_t, omp_nest_lock_25_t): New types.
	(omp_lock_t): Use sem_t instead of mutex if semaphores
	aren't broken.
	(omp_nest_lock_t): Likewise.  Add owner field.

	* testsuite/libgomp.c/collapse-1.c: New test.
	* testsuite/libgomp.c/collapse-2.c: New test.
	* testsuite/libgomp.c/collapse-3.c: New test.
	* testsuite/libgomp.c/icv-1.c: New test.
	* testsuite/libgomp.c/icv-2.c: New test.
	* testsuite/libgomp.c/lib-2.c: New test.
	* testsuite/libgomp.c/lock-1.c: New test.
	* testsuite/libgomp.c/lock-2.c: New test.
	* testsuite/libgomp.c/lock-3.c: New test.
	* testsuite/libgomp.c/loop-4.c: New test.
	* testsuite/libgomp.c/loop-5.c: New test.
	* testsuite/libgomp.c/loop-6.c: New test.
	* testsuite/libgomp.c/loop-7.c: New test.
	* testsuite/libgomp.c/loop-8.c: New test.
	* testsuite/libgomp.c/loop-9.c: New test.
	* testsuite/libgomp.c/nested-3.c: New test.
	* testsuite/libgomp.c/nestedfn-6.c: New test.
	* testsuite/libgomp.c/sort-1.c: New test.
	* testsuite/libgomp.c/task-1.c: New test.
	* testsuite/libgomp.c/task-2.c: New test.
	* testsuite/libgomp.c/task-3.c: New test.
	* testsuite/libgomp.c/task-4.c: New test.
	* testsuite/libgomp.c++/c++.exp: Add libstdc++-v3 build includes
	to C++ testsuite default compiler options.
	* testsuite/libgomp.c++/collapse-1.C: New test.
	* testsuite/libgomp.c++/collapse-2.C: New test.
	* testsuite/libgomp.c++/ctor-10.C: New test.
	* testsuite/libgomp.c++/for-1.C: New test.
	* testsuite/libgomp.c++/for-2.C: New test.
	* testsuite/libgomp.c++/for-3.C: New test.
	* testsuite/libgomp.c++/for-4.C: New test.
	* testsuite/libgomp.c++/for-5.C: New test.
	* testsuite/libgomp.c++/loop-8.C: New test.
	* testsuite/libgomp.c++/loop-9.C: New test.
	* testsuite/libgomp.c++/loop-10.C: New test.
	* testsuite/libgomp.c++/task-1.C: New test.
	* testsuite/libgomp.c++/task-2.C: New test.
	* testsuite/libgomp.c++/task-3.C: New test.
	* testsuite/libgomp.c++/task-4.C: New test.
	* testsuite/libgomp.c++/task-5.C: New test.
	* testsuite/libgomp.c++/task-6.C: New test.
	* testsuite/libgomp.fortran/allocatable1.f90: New test.
	* testsuite/libgomp.fortran/allocatable2.f90: New test.
	* testsuite/libgomp.fortran/allocatable3.f90: New test.
	* testsuite/libgomp.fortran/allocatable4.f90: New test.
	* testsuite/libgomp.fortran/collapse1.f90: New test.
	* testsuite/libgomp.fortran/collapse2.f90: New test.
	* testsuite/libgomp.fortran/collapse3.f90: New test.
	* testsuite/libgomp.fortran/collapse4.f90: New test.
	* testsuite/libgomp.fortran/lastprivate1.f90: New test.
	* testsuite/libgomp.fortran/lastprivate2.f90: New test.
	* testsuite/libgomp.fortran/lib4.f90: New test.
	* testsuite/libgomp.fortran/lock-1.f90: New test.
	* testsuite/libgomp.fortran/lock-2.f90: New test.
	* testsuite/libgomp.fortran/nested1.f90: New test.
	* testsuite/libgomp.fortran/nestedfn4.f90: New test.
	* testsuite/libgomp.fortran/strassen.f90: New test.
	* testsuite/libgomp.fortran/tabs1.f90: New test.
	* testsuite/libgomp.fortran/tabs2.f: New test.
	* testsuite/libgomp.fortran/task1.f90: New test.
	* testsuite/libgomp.fortran/task2.f90: New test.
	* testsuite/libgomp.fortran/vla4.f90: Add dg-warning.
	* testsuite/libgomp.fortran/vla5.f90: Likewise.
	* testsuite/libgomp.c/pr26943-2.c: Likewise.
	* testsuite/libgomp.c/pr26943-3.c: Likewise.
	* testsuite/libgomp.c/pr26943-4.c: Likewise.

Co-Authored-By: Jakob Blomer <jakob.blomer@ira.uka.de>
Co-Authored-By: Richard Henderson <rth@redhat.com>
Co-Authored-By: Ulrich Drepper <drepper@redhat.com>

From-SVN: r136433
2008-06-06 15:01:54 +02:00
..
ada einfo.ads, einfo.adb: Remove unused flag Function_Returns_With_DSP. 2008-06-04 17:01:24 +00:00
config i386.md (*indirect_jump): Macroize using P mode iterator. 2008-06-06 13:57:16 +02:00
cp c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
doc tree-call-cdce.c: New file. 2008-06-04 21:49:45 +00:00
fortran c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
ginclude
java jcf-parse.c (give_name_to_class): Call find_sourcefile to find full pathname of source file. 2008-05-23 13:52:03 +00:00
objc objc-act.c (objc_generate_write_barrier, [...]): Use CONVERT_EXPR_P. 2008-05-12 15:08:27 +02:00
objcp t-uclinux (generated_files): Add sysroot-suffix.h. 2008-04-03 06:12:27 +00:00
po * zh_CN.po: Update. 2008-05-11 14:44:11 +01:00
testsuite c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
ABOUT-GCC-NLS
acinclude.m4 configure.ac: Drop unneeded backslash ending up in config.in. 2008-06-02 19:37:45 +00:00
aclocal.m4 re PR other/35457 (Error building GCC trunk on CELL SPU) 2008-04-18 10:28:53 +00:00
addresses.h
alias.c tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS. 2008-05-08 09:27:29 +00:00
alias.h * alias.h (alias_set_type): Change from HOST_WIDE_INT to int. 2008-03-06 01:18:51 +00:00
alloc-pool.c re PR tree-optimization/34176 (SCCVN breaks gettext) 2007-11-23 14:28:59 +00:00
alloc-pool.h re PR tree-optimization/34176 (SCCVN breaks gettext) 2007-11-23 14:28:59 +00:00
attribs.c re PR c/35744 (ICE attributes for invalid types) 2008-04-11 06:55:38 +00:00
auto-inc-dec.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
BASE-VER * BASE-VER: Set to 4.4.0. 2008-02-18 23:41:06 +01:00
basic-block.h predict.c (maybe_hot_frequency_p): Break out of... 2008-06-02 16:36:49 +00:00
bb-reorder.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
bitmap.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
bitmap.h sbitmap.c (sbitmap_range_empty_p): New function. 2008-04-21 20:15:38 +00:00
bt-load.c re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore) 2008-04-25 23:14:40 +00:00
builtin-attrs.def
builtin-types.def c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
builtins.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
builtins.def builtin-types.def (BT_FN_INT_INT_INT_INT_INT_INT_VAR): New. 2008-05-23 04:47:12 +00:00
c-aux-info.c
c-common.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
c-common.def
c-common.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-config-lang.in
c-convert.c
c-cppbuiltin.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-decl.c [multiple changes] 2008-05-07 20:48:07 +00:00
c-dump.c
c-errors.c re PR c++/24924 (front end and preprocessor pedantic_errors settings should agree) 2008-03-02 15:45:29 +00:00
c-format.c c-format.c (check_format_info_main): Use strncmp rather than a magic prefix to handle multichar length specs. 2008-04-24 07:42:07 +00:00
c-format.h ms format support for mingw. 2008-03-20 09:24:42 +01:00
c-gimplify.c re PR c/34146 (Inefficient code with compound literals inside a CONSTRUCTO) 2007-11-20 11:36:03 +01:00
c-lang.c
c-lex.c cpp-id-data.h (UC): Was U, conflicts with U... 2008-04-18 09:58:08 -04:00
c-objc-common.c
c-objc-common.h function.c (free_after_parsing): Replace with cxx_push_function_context from C++ front-end. 2008-04-04 14:57:18 +00:00
c-omp.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-opts.c re PR fortran/18428 (No preprocessing option -cpp for gfortran) 2008-05-25 18:37:41 -04:00
c-parser.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-pch.c re PR pch/13675 (#including a precompiled header more than once in the same unit fails) 2008-04-01 12:58:02 +02:00
c-ppoutput.c cppopts.texi (-dU): Document. 2008-04-02 20:42:53 +01:00
c-pragma.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-pragma.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-pretty-print.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
c-pretty-print.h
c-semantics.c
c-tree.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c-typeck.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
c.opt Fix c++/27975. 2008-05-27 14:59:53 +00:00
caller-save.c re PR middle-end/36253 (Caller-save stack slot may not have proper alignment) 2008-05-26 06:59:56 -07:00
calls.c optabs.c (prepare_cmp_insn): Changed LCT_PURE_MAKE_BLOCK to LCT_PURE and LCT_CONST_MAKE_BLOCK to LCT_CONST... 2008-05-14 17:05:13 +00:00
cfg.c [multiple changes] 2008-05-16 09:36:26 -04:00
cfganal.c
cfgbuild.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
cfgcleanup.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cfgexpand.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cfghooks.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cfghooks.h
cfglayout.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cfglayout.h
cfgloop.c
cfgloop.h
cfgloopanal.c
cfgloopmanip.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cfgrtl.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
cgraph.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
cgraph.h cgraph.h (compute_inline_parameters): Made public. 2008-05-15 22:58:03 +00:00
cgraphbuild.c re PR tree-optimization/36329 (latent problem with tree inlining) 2008-05-26 18:23:38 +00:00
cgraphunit.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ChangeLog c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
ChangeLog-1997
ChangeLog-1998
ChangeLog-1999
ChangeLog-2000
ChangeLog-2001
ChangeLog-2002
ChangeLog-2003
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007 Fix a typo. 2008-05-13 07:05:02 -07:00
ChangeLog.dataflow
ChangeLog.lib
ChangeLog.ptr
ChangeLog.tree-ssa
collect2.c * collect2.c (find_a_file): Use IS_ABSOLUTE_PATH. 2008-05-21 16:40:48 +01:00
collect2.h
combine-stack-adj.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
combine.c re PR middle-end/36194 (Truncation optimization in combine can remove necessary truncations) 2008-05-15 19:25:53 +00:00
common.opt tree-call-cdce.c: New file. 2008-06-04 21:49:45 +00:00
conditions.h
config.build re PR bootstrap/35273 (Bootstrap of mingw32 using non-MSYS shell broken) 2008-02-21 19:55:39 +00:00
config.gcc config.gcc (powerpc-*-linux*spe*): Use t-dfprules. 2008-06-06 00:03:11 +01:00
config.host config.cc (m68hc11, [...]): Add usegas.h, rename tmake_file to m68hc11/t-m68hc11. 2008-03-27 10:04:08 +00:00
config.in configure.ac: Drop unneeded backslash ending up in config.in. 2008-06-02 19:37:45 +00:00
configure re PR target/36348 (f951 link failure on i686-apple-darwin9) 2008-05-29 14:21:35 -04:00
configure.ac configure.ac: Drop unneeded backslash ending up in config.in. 2008-06-02 19:37:45 +00:00
convert.c pa.c (reloc_needed): Use CASE_CONVERT. 2008-05-09 16:57:39 +02:00
convert.h
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
coretypes.h targhooks.h (default_emutls_var_fields, [...]): Declare. 2008-04-27 15:35:19 +00:00
coverage.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
coverage.h coverage.h (tree_coverage_counter_addr): Declare. 2008-03-08 20:52:50 +00:00
cppdefault.c
cppdefault.h
cppspec.c
crtstuff.c
cse.c rtl.texi: Removed reference to REG_NO_CONFLICT notes. 2008-05-14 12:24:43 +00:00
cselib.c * cselib.c (cselib_record_sets): Use correct mode for IF_THEN_ELSE. 2008-05-20 06:44:59 +00:00
cselib.h
cstamp-h.in
DATESTAMP Daily bump. 2008-06-06 00:17:17 +00:00
dbgcnt.c dbgcnt.def (ra_byte_scan): Added. 2008-04-21 18:55:13 +00:00
dbgcnt.def dbgcnt.def (ra_byte_scan): Added. 2008-04-21 18:55:13 +00:00
dbgcnt.h
dbxout.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
dbxout.h
dce.c re PR middle-end/36177 (g++.dg/opt/pr23714.C ICEs with 135041 -> 135057) 2008-05-09 12:14:57 +00:00
dce.h re PR rtl-optimization/33644 (ICE in local_cprop_pass with -ftrapv for crafty) 2007-10-22 19:28:23 +00:00
ddg.c re PR tree-optimization/26854 (Inordinate compile times on large routines) 2008-01-22 13:57:01 +00:00
ddg.h
debug.c
debug.h re PR debug/34249 (FAIL: gcc.dg/tree-prof/bb-reorg.c compilation, -fprofile-use -D_PROFILE_USE) 2008-01-16 12:10:27 +01:00
defaults.h defaults.h (TARGET_MEM_CONSTRAINT): New target macro added. 2008-05-27 11:41:10 +00:00
DEV-PHASE
df-byte-scan.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
df-core.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
df-problems.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
df-scan.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
df.h ifcvt.c (dead_or_predicable): Rename df_simulate_one_insn_backwards to df_simulate_one_insn. 2008-05-16 13:54:34 +00:00
dfp.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
dfp.h
diagnostic.c diagnostic.c (diagnostic_count_diagnostic): Delete. 2008-03-24 14:19:55 +00:00
diagnostic.def
diagnostic.h re PR c++/24924 (front end and preprocessor pedantic_errors settings should agree) 2008-03-02 15:45:29 +00:00
dojump.c pa.c (reloc_needed): Use CASE_CONVERT. 2008-05-09 16:57:39 +02:00
dominance.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
domwalk.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
domwalk.h
double-int.c
double-int.h re PR bootstrap/35051 (Build machine requires GMP and MPFR for building cross-host gccs) 2008-02-08 19:10:25 +00:00
dse.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
dse.h
dummy-checksum.c
dwarf2.h re PR fortran/22244 (dimension information is lost for multi-dimension array) 2007-12-09 18:08:06 +01:00
dwarf2asm.c [multiple changes] 2008-05-16 09:40:25 -04:00
dwarf2asm.h
dwarf2out.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
dwarf2out.h re PR fortran/22244 (dimension information is lost for multi-dimension array) 2007-12-09 18:08:06 +01:00
dwarf.h
ebitmap.c
ebitmap.h
emit-rtl.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
emit-rtl.h
emutls.c
errors.c
errors.h
et-forest.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
et-forest.h
except.c re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore) 2008-04-25 23:14:40 +00:00
except.h gengtype.c (write_root): Param_is argument is OK. 2008-04-15 19:37:22 +00:00
exec-tool.in exec-tool.in: Use an environment variable (private) instead of a file (shared) as a semaphore... 2008-05-30 15:19:45 -04:00
explow.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
expmed.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
expr.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
expr.h re PR middle-end/35800 (Revision 133835 failed to compile binutils) 2008-04-03 02:09:20 +00:00
final.c final.c (frame_pointer_needed): Removed. 2008-05-25 09:24:43 -07:00
fix-header.c re PR fortran/18428 (No preprocessing option -cpp for gfortran) 2008-05-25 18:37:41 -04:00
fixed-value.c
fixed-value.h
fixproto Committed with RM approval this time. 2008-01-25 07:52:56 +11:00
flags.h final.c (frame_pointer_needed): Removed. 2008-05-25 09:24:43 -07:00
fold-const.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
fp-test.c
FSFChangeLog
FSFChangeLog.10
FSFChangeLog.11
function.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
function.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
fwprop.c dbgcnt.def (ra_byte_scan): Added. 2008-04-21 18:55:13 +00:00
gbl-ctors.h
gcc.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gcc.h re PR fortran/35019 (Gfortran does not support "-J <dir>" only "-J<dir>") 2008-04-21 13:10:15 -04:00
gccbug.in
gccspec.c
gcov-dump.c gcov-dump.c (tag_summary): Only print summaries for the first GCOV_COUNTERS_SUMMABLE counters. 2008-04-10 18:21:26 +00:00
gcov-io.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gcov-io.h * gcov-io.h (__gcov_merge_ior, __gcov_fork): Mark hidden. 2008-03-18 14:47:14 +00:00
gcov-iov.c
gcov.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gcse.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gdbinit.in
gen-protos.c
genattr.c
genattrtab.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
genautomata.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gencheck.c
genchecksum.c
gencodes.c
genconditions.c
genconfig.c
genconstants.c
genemit.c
genextract.c
genflags.c
gengenrtl.c
gengtype-lex.l
gengtype-parse.c
gengtype.c symtab.h (HT_ALLOCED): Remove. 2008-05-21 15:00:59 +00:00
gengtype.h
genmddeps.c
genmodes.c
genmultilib
genopinit.c Add SSE5 vector shift/rotate; Update SSE5 vector multiply 2008-05-14 20:07:53 +00:00
genoutput.c defaults.h (TARGET_MEM_CONSTRAINT): New target macro added. 2008-05-27 11:41:10 +00:00
genpeep.c
genpreds.c defaults.h (TARGET_MEM_CONSTRAINT): New target macro added. 2008-05-27 11:41:10 +00:00
genrecog.c gensupport.h (pred_data): Add a "num_codes" field. 2008-05-08 21:28:27 +00:00
gensupport.c gensupport.h (pred_data): Add a "num_codes" field. 2008-05-08 21:28:27 +00:00
gensupport.h gensupport.h (pred_data): Add a "num_codes" field. 2008-05-08 21:28:27 +00:00
ggc-common.c symtab.h (HT_ALLOCED): Remove. 2008-05-21 15:00:59 +00:00
ggc-none.c
ggc-page.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ggc-zone.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ggc.h symtab.h (HT_ALLOCED): Remove. 2008-05-21 15:00:59 +00:00
gimple-low.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
gimplify.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
glimits.h
global.c rtl.texi: Removed reference to REG_NO_CONFLICT notes. 2008-05-14 12:24:43 +00:00
graph.c
graph.h
graphds.c
graphds.h invoke.texi: Document -ftree-loop-distribution. 2008-02-28 12:37:24 +00:00
gstab.h
gsyms.h
gsyslimits.h
gthr-aix.h
gthr-dce.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
gthr-gnat.c
gthr-gnat.h
gthr-lynx.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
gthr-mipssde.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
gthr-nks.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
gthr-posix95.h gthr-posix.h (__gthread_active_p): Use the Solaris implementation for FreeBSD as well. 2008-04-18 02:16:35 +00:00
gthr-posix.c
gthr-posix.h gthr-posix.h (__gthread_active_p): Use the Solaris implementation for FreeBSD as well. 2008-04-18 02:16:35 +00:00
gthr-rtems.h gthr-rtems.h: Implement __gthread_mutex_destroy. 2008-03-05 13:16:57 +00:00
gthr-single.h gthr-single.h: Add in required interface elements as per gthr.h. 2008-05-05 17:42:26 +00:00
gthr-solaris.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
gthr-tpf.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
gthr-vxworks.h * gthr-vxworks.h (UNUSED): Define. 2008-03-24 11:18:22 +00:00
gthr-win32.h * gthr-win32.h [__GTHREAD_HIDE_WIN32API] 2008-03-04 06:33:39 +00:00
gthr.h re PR libfortran/35063 (Clean up use of destroy_unit_mutex()) 2008-03-01 12:46:31 +02:00
haifa-sched.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
hard-reg-set.h
hooks.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
hooks.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
host-default.c
hosthooks-def.h
hosthooks.h
hwint.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ifcvt.c ifcvt.c (dead_or_predicable): Rename df_simulate_one_insn_backwards to df_simulate_one_insn. 2008-05-16 13:54:34 +00:00
incpath.c cpplib.h (struct cpp_dir): Add new field, canonical_name. 2008-05-30 00:57:56 +00:00
incpath.h re PR fortran/18428 (No preprocessing option -cpp for gfortran) 2008-05-25 18:37:41 -04:00
init-regs.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
input.h toplev.c (input_file_stack, [...]): Remove. 2008-02-29 20:09:05 +00:00
insn-addr.h
insn-notes.def
integrate.c function.h (incomming_args): Break out of struct function. 2008-04-08 08:59:34 +00:00
integrate.h function.h (incomming_args): Break out of struct function. 2008-04-08 08:59:34 +00:00
intl.c
intl.h
ipa-cp.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-inline.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-prop.c ipa-cp.c (ipcp_init_stage): Calls ipa_set_called_with_variable_arg instead of setting number of formal... 2008-04-30 12:01:59 +02:00
ipa-prop.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-pure-const.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-reference.c except.c (dw2_size_of_call_site_table, [...]): Use vector API for call_site_record. 2008-04-18 05:26:12 +00:00
ipa-reference.h
ipa-struct-reorg.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
ipa-struct-reorg.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-type-escape.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ipa-type-escape.h ipa-type-escape.h: Expose function is_array_access_through_pointer_and_index. 2007-10-24 10:36:30 +00:00
ipa-utils.c [multiple changes] 2007-11-08 16:45:53 +00:00
ipa-utils.h
ipa.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
jump.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
lambda-code.c re PR middle-end/36286 (ICE with -ftree-loop-linear and -O1 and above) 2008-05-21 23:13:00 +00:00
lambda-mat.c
lambda-trans.c
lambda.h tree-loop-linear.c (gather_interchange_stats): Look in the access matrix... 2008-05-20 19:11:56 +00:00
langhooks-def.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
langhooks.c tree-cfg.c (verify_expr): Check with is_gimple_address. 2008-04-23 15:00:52 +00:00
langhooks.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
LANGUAGES
lcm.c
libada-mk.in
libfuncs.h
libgcc2.c libgcc2.c [L_trampoline]: Remove unnecessary prototype for 2008-04-15 19:44:16 +00:00
libgcc2.h libgcc2.c (__fixunstfDI, [...]): Make return type unsigned. 2007-11-05 11:41:40 +00:00
libgcc-std.ver
libgcov.c
limitx.h
limity.h
lists.c
local-alloc.c rtl.texi: Removed reference to REG_NO_CONFLICT notes. 2008-05-14 12:24:43 +00:00
longlong.h longlong.h (add_ssaaaa): Support Intel asm syntax in i386 and x86_64 versions. 2007-10-29 23:54:54 +00:00
loop-doloop.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
loop-init.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
loop-invariant.c rtl.texi: Removed reference to REG_NO_CONFLICT notes. 2008-05-14 12:24:43 +00:00
loop-iv.c re PR tree-optimization/26854 (Inordinate compile times on large routines) 2008-01-22 13:57:01 +00:00
loop-unroll.c
loop-unswitch.c
lower-subreg.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
machmode.def
machmode.h
main.c
Makefile.in tree-call-cdce.c: New file. 2008-06-04 21:49:45 +00:00
matrix-reorg.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
mips-tdump.c re PR driver/35420 (--version copyright date vs. 2008) 2008-03-02 23:50:02 +01:00
mips-tfile.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
mkconfig.sh
mkmap-flat.awk cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
mkmap-symver.awk cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
mode-classes.def
mode-switching.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
modulo-sched.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
omega.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
omega.h
omp-builtins.def c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
omp-low.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
ONEWS
opt-functions.awk
opt-gather.awk
optabs.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
optabs.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
optc-gen.awk * optc-gen.awk: Fix comment typo. 2008-05-11 19:43:00 +00:00
opth-gen.awk common.opt (Wlarger-than=): New. 2008-02-26 14:01:02 +00:00
opts-common.c re PR other/32754 (The opt?-gen.awk file generators produce incorrect credits) 2008-02-07 20:40:19 +00:00
opts.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
opts.h re PR other/28322 (GCC new warnings and compatibility) 2008-02-25 23:41:43 +00:00
output.h targhooks.h (default_emutls_var_fields, [...]): Declare. 2008-04-27 15:35:19 +00:00
params.c
params.def invoke.texi (-fdump-tree-salias): Remove documentation. 2008-05-09 09:37:36 +00:00
params.h invoke.texi (-fdump-tree-salias): Remove documentation. 2008-05-09 09:37:36 +00:00
passes.c * passes.c (execute_ipa_pass_list): Do not regenerate summaries. 2008-06-06 09:35:19 +00:00
pointer-set.c
pointer-set.h
postreload-gcse.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
postreload.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
predict.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
predict.def tree-pretty-print.c: Include predict.h. 2008-03-18 15:21:06 +00:00
predict.h tree-pretty-print.c: Include predict.h. 2008-03-18 15:21:06 +00:00
prefix.c
prefix.h
pretty-print.c pretty-print.c (pp_integer_with_precision): Use HOST_LONG_LONG_FORMAT. 2008-05-11 04:06:57 -06:00
pretty-print.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
print-rtl.c dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT for hex printing. 2008-04-15 19:56:20 +00:00
print-tree.c invoke.text (-fdump-tree-*-verbose): New option. 2008-05-16 09:34:34 -04:00
profile.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
protoize.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ra-conflict.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
ra.h global.c (find_reg): Mark the eh regs as used if necessary. 2008-01-17 16:18:59 +00:00
read-rtl.c read-rtl.c (join_c_conditions): Return the first string if the two strings are equal. 2008-05-08 21:29:00 +00:00
README.Portability
real.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
real.h builtins.c (expand_builtin_pow, [...]): Remove uses of dconst3, dconstsqrt2, dconstthird, dconste and/or dconst10. 2008-03-26 15:04:44 +00:00
recog.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
recog.h reload.c: (find_reloads): Skip alternatives according to the "enabled" attribute. 2008-05-27 11:46:45 +00:00
reg-notes.def rtl.texi: Removed reference to REG_NO_CONFLICT notes. 2008-05-14 12:24:43 +00:00
reg-stack.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
regclass.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
regmove.c regmove.c (try_auto_increment): Fix spelling error in comment. 2008-03-20 15:31:53 +11:00
regrename.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
regs.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
regstat.c re PR rtl-optimization/31396 (Inline code performance much worse than out-of-line) 2008-01-16 16:32:05 +00:00
reload1.c rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
reload.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
reload.h
reorg.c [multiple changes] 2008-05-07 20:48:07 +00:00
resource.c function.h (incomming_args): Break out of struct function. 2008-04-08 08:59:34 +00:00
resource.h
rtl-error.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
rtl-factoring.c ifcvt.c (dead_or_predicable): Rename df_simulate_one_insn_backwards to df_simulate_one_insn. 2008-05-16 13:54:34 +00:00
rtl.c
rtl.def system.h (USE_MAPPED_LOCATION): Poison. 2008-02-26 16:05:24 +00:00
rtl.h rtl.h (emit_clobber, [...]): Declare. 2008-06-01 09:47:28 +00:00
rtlanal.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
rtlhooks-def.h
rtlhooks.c re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where GET_MODE_CLASS (read_mode) != GET_MODE_CLASS (store_mode) (and the size is the same)) 2008-03-22 19:37:53 +00:00
sbitmap.c sbitmap.c (sbitmap_range_empty_p): New function. 2008-04-21 20:15:38 +00:00
sbitmap.h sbitmap.c (sbitmap_range_empty_p): New function. 2008-04-21 20:15:38 +00:00
scan-decls.c
scan-types.sh
scan.c
scan.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
sched-deps.c [multiple changes] 2008-05-07 20:48:07 +00:00
sched-ebb.c
sched-int.h
sched-rgn.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
sched-vis.c dwarf2asm.c (dw2_assemble_integer): Cast to unsigned HOST_WIDE_INT for hex printing. 2008-04-15 19:56:20 +00:00
sdbout.c
sdbout.h
see.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
simplify-rtx.c re PR target/36090 (ppc64 cacoshl miscompilation) 2008-05-08 12:35:56 -04:00
sort-protos
sparseset.c re PR rtl-optimization/33796 (valgrind error with -O2 for linux kernel code) 2008-01-16 21:21:36 -06:00
sparseset.h sparseset.c: Include config.h and system.h before sparseset.h. 2007-12-05 13:47:22 +01:00
sreal.c
sreal.h
stab.def
stack-ptr-mod.c re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore) 2008-04-25 23:14:40 +00:00
statistics.c statistics.c: New file. 2008-05-15 14:00:22 +00:00
statistics.h tree-pass.h (current_pass): Declare. 2008-05-15 13:39:39 +00:00
stmt.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
stor-layout.c re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore) 2008-04-25 23:14:40 +00:00
stringpool.c symtab.h (HT_ALLOCED): Remove. 2008-05-21 15:00:59 +00:00
stub-objc.c
sync-builtins.def
sys-protos.h
sys-types.h
system.h Fix bug reported by Andrew Pinski. 2008-04-12 00:13:44 -07:00
target-def.h tm.texi (OVERRIDE_ABI_FORMAT): New. 2008-06-03 10:05:25 +02:00
target.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
targhooks.c 2008-05-07 Kai Tietz <kai,tietz@onevision.com> 2008-05-08 09:10:49 +02:00
targhooks.h targhooks.h (default_emutls_var_fields, [...]): Declare. 2008-04-27 15:35:19 +00:00
timevar.c
timevar.def tree-call-cdce.c: New file. 2008-06-04 21:49:45 +00:00
timevar.h
tlink.c tlink.c (scan_linker_output): Look for symbol name in single quotes. 2008-03-31 18:01:43 +00:00
toplev.c symtab.h (HT_ALLOCED): Remove. 2008-05-21 15:00:59 +00:00
toplev.h tree-dump.c (dump_enable_all): Remove prototype; do not accept letter argument. 2008-04-05 05:50:19 +00:00
tracer.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-affine.c Makefile.in (tree-affine.o): Add $(FLAGS_H) dependency. 2008-04-16 15:16:42 +00:00
tree-affine.h tree-affine.h (aff_combination_expand): Declare. 2008-03-27 10:25:36 +00:00
tree-browser.c
tree-browser.def
tree-call-cdce.c tree-call-cdce.c: New file. 2008-06-04 21:49:45 +00:00
tree-cfg.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-cfgcleanup.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-chrec.c tree-scalar-evolution.c (instantiate_parameters_1): An SSA_NAME defined in a loop at depth 0 is invariant. 2008-03-03 11:51:36 +00:00
tree-chrec.h tree-loop-linear.c (gather_interchange_stats): Look in the access matrix... 2008-05-20 19:11:56 +00:00
tree-complex.c tree-complex.c (expand_complex_div_wide): Don't create CONDs that trap. 2008-05-08 22:16:59 +00:00
tree-data-ref.c tree-loop-linear.c (gather_interchange_stats): Look in the access matrix... 2008-05-20 19:11:56 +00:00
tree-data-ref.h tree-loop-linear.c (gather_interchange_stats): Look in the access matrix... 2008-05-20 19:11:56 +00:00
tree-dfa.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-dump.c invoke.text (-fdump-tree-*-verbose): New option. 2008-05-16 09:34:34 -04:00
tree-dump.h re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-eh.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-flow-inline.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-flow.h re PR tree-optimization/36343 (Wrong code due to bad TBAA pruning of points-to-sets and use in call clobbering) 2008-05-29 10:31:58 +00:00
tree-gimple.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-gimple.h re PR tree-optimization/36329 (latent problem with tree inlining) 2008-05-26 18:23:38 +00:00
tree-if-conv.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-inline.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-inline.h tree-inline.c (copy_generic_body, [...]): Export. 2008-04-03 05:41:57 +00:00
tree-into-ssa.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-iterator.c
tree-iterator.h
tree-loop-distribution.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-loop-linear.c tree-loop-linear.c (gather_interchange_stats): Look in the access matrix... 2008-05-20 19:11:56 +00:00
tree-mudflap.c tree-cfg.c (verify_expr): Check with is_gimple_address. 2008-04-23 15:00:52 +00:00
tree-mudflap.h
tree-nested.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-nomudflap.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-nrv.c tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS. 2008-05-08 09:27:29 +00:00
tree-object-size.c pa.c (reloc_needed): Use CASE_CONVERT. 2008-05-09 16:57:39 +02:00
tree-optimize.c tree.h (init_phinodes, [...]): Move ... 2008-05-13 14:24:33 -04:00
tree-outof-ssa.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-parloops.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-pass.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-phinodes.c
tree-predcom.c tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS. 2008-05-08 09:27:29 +00:00
tree-pretty-print.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-profile.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-scalar-evolution.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-scalar-evolution.h re PR tree-optimization/34244 (VRP/SCEV miscompiles Firefox) 2008-05-31 13:01:10 +00:00
tree-sra.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-address.c re PR tree-optimization/36245 (internal compiler error: in build2_stat, at tree.c:3116) 2008-05-27 13:10:18 +00:00
tree-ssa-alias-warnings.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-alias.c tree-flow-inline.h (is_global_var): Do not check TREE_STATIC on MTAGs. 2008-06-04 16:00:10 +00:00
tree-ssa-ccp.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-coalesce.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-copy.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-ssa-copyrename.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-ssa-dce.c tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure. 2008-05-20 12:34:06 +00:00
tree-ssa-dom.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-dse.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-forwprop.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-ifcombine.c tree-ssa-ifcombine.c (get_name_for_bit_test): Use CONVERT_EXPR_P. 2008-06-02 11:45:27 +02:00
tree-ssa-live.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-live.h cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-loop-ch.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-ssa-loop-im.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-loop-ivcanon.c re PR tree-optimization/36078 (gfortran fails to build cpu2006/465.tonto) 2008-04-29 16:01:36 +00:00
tree-ssa-loop-ivopts.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-loop-manip.c re PR tree-optimization/18754 (unrolling happens too late/SRA does not happen late enough) 2008-04-27 16:27:08 +00:00
tree-ssa-loop-niter.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-loop-prefetch.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-loop-unswitch.c
tree-ssa-loop.c re PR tree-optimization/18754 (unrolling happens too late/SRA does not happen late enough) 2008-04-27 16:27:08 +00:00
tree-ssa-math-opts.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-ssa-operands.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree-ssa-operands.h re PR tree-optimization/34683 (SSA rewriting in the loop unroller causes quadratic behavior) 2008-01-08 16:29:14 +00:00
tree-ssa-phiopt.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-phiprop.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-pre.c tree-ssa-dse (max_stmt_uid): Removed. 2008-05-16 09:38:13 -04:00
tree-ssa-propagate.c tree-ssa-propagate.c (set_rhs): Preserve the histogram and the eh region information. 2008-05-28 20:15:10 +00:00
tree-ssa-propagate.h
tree-ssa-reassoc.c tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure. 2008-05-20 12:34:06 +00:00
tree-ssa-sccvn.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-sccvn.h tree-ssa-sccvn.h (vn_reference_lookup): Adjust prototype. 2008-04-15 13:28:08 +00:00
tree-ssa-sink.c tree-ssa-reassoc.c (fini_reassoc): Use the statistics infrastructure. 2008-05-20 12:34:06 +00:00
tree-ssa-structalias.c tree-ssa-structalias.c (merge_smts_into): Remove. 2008-06-06 10:11:44 +00:00
tree-ssa-structalias.h tree-ssa-alias.c (finalize_ref_all_pointers): Remove. 2008-04-29 15:56:12 +00:00
tree-ssa-ter.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-threadedge.c pa.c (reloc_needed): Use CASE_CONVERT. 2008-05-09 16:57:39 +02:00
tree-ssa-threadupdate.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssa-uncprop.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
tree-ssa.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-ssanames.c tree.h (init_phinodes, [...]): Move ... 2008-05-13 14:24:33 -04:00
tree-stdarg.c pa.c (reloc_needed): Use CASE_CONVERT. 2008-05-09 16:57:39 +02:00
tree-stdarg.h
tree-tailcall.c re PR middle-end/36326 (gimplification of aggregate copies introduces extra aggregate copy) 2008-05-27 14:28:02 +00:00
tree-vect-analyze.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-vect-generic.c Add SSE5 vector shift/rotate; Update SSE5 vector multiply 2008-05-14 20:07:53 +00:00
tree-vect-patterns.c Add SSE5 vector shift/rotate; Update SSE5 vector multiply 2008-05-14 20:07:53 +00:00
tree-vect-transform.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-vectorizer.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-vectorizer.h tree-vectorizer.c (free_stmt_vec_info): New function. 2008-03-12 06:06:00 +00:00
tree-vn.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree-vrp.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
tree.c c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree.def c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
tree.h c-cppbuiltin.c (c_cpp_builtins): Change _OPENMP value to 200805. 2008-06-06 15:01:54 +02:00
treestruct.def treestruct.def (TS_STRUCT_FIELD_TAG): Remove. 2008-05-15 09:34:51 -04:00
tsystem.h
typeclass.h
unwind-c.c
unwind-compat.c
unwind-compat.h
unwind-dw2-fde-compat.c
unwind-dw2-fde-darwin.c
unwind-dw2-fde-glibc.c
unwind-dw2-fde.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
unwind-dw2-fde.h
unwind-dw2.c
unwind-dw2.h
unwind-generic.h * unwind-generic.h: Fix comment typos. 2007-11-26 13:25:50 +11:00
unwind-pe.h
unwind-sjlj.c
unwind.inc cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
value-prof.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
value-prof.h tree-ssa-propagate.c (set_rhs): Preserve the histogram and the eh region information. 2008-05-28 20:15:10 +00:00
var-tracking.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
varasm.c tree-nested.c (convert_tramp_reference): Do not build a trampoline if we don't want one. 2008-05-25 22:42:49 +00:00
varpool.c varpool.c (dump_varpool): Use 'next', not 'next_needed' when traversing pool. 2007-11-02 15:29:09 +00:00
varray.c
varray.h
vec.c
vec.h
vecprim.h
version.c
version.h
vmsdbg.h
vmsdbgout.c cgraph.c: Fix typos in comments. 2008-06-06 05:42:00 +00:00
web.c re PR other/35094 (RTL dump file letters hosed and partly undocumented) 2008-03-19 11:22:40 +00:00
xcoff.h
xcoffout.c
xcoffout.h

Copyright (C) 2000, 2003 Free Software Foundation, Inc.

This file is intended to contain a few notes about writing C code
within GCC so that it compiles without error on the full range of
compilers GCC needs to be able to compile on.

The problem is that many ISO-standard constructs are not accepted by
either old or buggy compilers, and we keep getting bitten by them.
This knowledge until know has been sparsely spread around, so I
thought I'd collect it in one useful place.  Please add and correct
any problems as you come across them.

I'm going to start from a base of the ISO C90 standard, since that is
probably what most people code to naturally.  Obviously using
constructs introduced after that is not a good idea.

For the complete coding style conventions used in GCC, please read
http://gcc.gnu.org/codingconventions.html


String literals
---------------

Irix6 "cc -n32" and OSF4 "cc" have problems with constant string
initializers with parens around it, e.g.

const char string[] = ("A string");

This is unfortunate since this is what the GNU gettext macro N_
produces.  You need to find a different way to code it.

Some compilers like MSVC++ have fairly low limits on the maximum
length of a string literal; 509 is the lowest we've come across.  You
may need to break up a long printf statement into many smaller ones.


Empty macro arguments
---------------------

ISO C (6.8.3 in the 1990 standard) specifies the following:

If (before argument substitution) any argument consists of no
preprocessing tokens, the behavior is undefined.

This was relaxed by ISO C99, but some older compilers emit an error,
so code like

#define foo(x, y) x y
foo (bar, )

needs to be coded in some other way.


free and realloc
----------------

Some implementations crash upon attempts to free or realloc the null
pointer.  Thus if mem might be null, you need to write

  if (mem)
    free (mem);


Trigraphs
---------

You weren't going to use them anyway, but some otherwise ISO C
compliant compilers do not accept trigraphs.


Suffixes on Integer Constants
-----------------------------

You should never use a 'l' suffix on integer constants ('L' is fine),
since it can easily be confused with the number '1'.


			Common Coding Pitfalls
			======================

errno
-----

errno might be declared as a macro.


Implicit int
------------

In C, the 'int' keyword can often be omitted from type declarations.
For instance, you can write

  unsigned variable;

as shorthand for

  unsigned int variable;

There are several places where this can cause trouble.  First, suppose
'variable' is a long; then you might think

  (unsigned) variable

would convert it to unsigned long.  It does not.  It converts to
unsigned int.  This mostly causes problems on 64-bit platforms, where
long and int are not the same size.

Second, if you write a function definition with no return type at
all:

  operate (int a, int b)
  {
    ...
  }

that function is expected to return int, *not* void.  GCC will warn
about this.

Implicit function declarations always have return type int.  So if you
correct the above definition to

  void
  operate (int a, int b)
  ...

but operate() is called above its definition, you will get an error
about a "type mismatch with previous implicit declaration".  The cure
is to prototype all functions at the top of the file, or in an
appropriate header.

Char vs unsigned char vs int
----------------------------

In C, unqualified 'char' may be either signed or unsigned; it is the
implementation's choice.  When you are processing 7-bit ASCII, it does
not matter.  But when your program must handle arbitrary binary data,
or fully 8-bit character sets, you have a problem.  The most obvious
issue is if you have a look-up table indexed by characters.

For instance, the character '\341' in ISO Latin 1 is SMALL LETTER A
WITH ACUTE ACCENT.  In the proper locale, isalpha('\341') will be
true.  But if you read '\341' from a file and store it in a plain
char, isalpha(c) may look up character 225, or it may look up
character -31.  And the ctype table has no entry at offset -31, so
your program will crash.  (If you're lucky.)

It is wise to use unsigned char everywhere you possibly can.  This
avoids all these problems.  Unfortunately, the routines in <string.h>
take plain char arguments, so you have to remember to cast them back
and forth - or avoid the use of strxxx() functions, which is probably
a good idea anyway.

Another common mistake is to use either char or unsigned char to
receive the result of getc() or related stdio functions.  They may
return EOF, which is outside the range of values representable by
char.  If you use char, some legal character value may be confused
with EOF, such as '\377' (SMALL LETTER Y WITH UMLAUT, in Latin-1).
The correct choice is int.

A more subtle version of the same mistake might look like this:

  unsigned char pushback[NPUSHBACK];
  int pbidx;
  #define unget(c) (assert(pbidx < NPUSHBACK), pushback[pbidx++] = (c))
  #define get(c) (pbidx ? pushback[--pbidx] : getchar())
  ...
  unget(EOF);

which will mysteriously turn a pushed-back EOF into a SMALL LETTER Y
WITH UMLAUT.


Other common pitfalls
---------------------

o Expecting 'plain' char to be either sign or unsigned extending.

o Shifting an item by a negative amount or by greater than or equal to
  the number of bits in a type (expecting shifts by 32 to be sensible
  has caused quite a number of bugs at least in the early days).

o Expecting ints shifted right to be sign extended.

o Modifying the same value twice within one sequence point.

o Host vs. target floating point representation, including emitting NaNs
  and Infinities in a form that the assembler handles.

o qsort being an unstable sort function (unstable in the sense that
  multiple items that sort the same may be sorted in different orders
  by different qsort functions).

o Passing incorrect types to fprintf and friends.

o Adding a function declaration for a module declared in another file to
  a .c file instead of to a .h file.