Commit Graph

73604 Commits

Author SHA1 Message Date
Roger Sayle 03bebcacbe re PR middle-end/23670 (Fold does not fold (a|b)&b to b likewise for (a&b) | b to b)
PR middle-end/23670
	* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Optimize (X&Y)|Y into
	(X,Y) and the corresponding symmetry related transformations.
	(fold_binary) <BIT_AND_EXPR>: Likewise, optimize (X|Y)&Y into
	(X,Y) and its symmetry related transformations.

	* gcc.dg/tree-ssa/andor-2.c: New test case.

From-SVN: r110997
2006-02-14 21:08:52 +00:00
Thomas Koenig ce99d59440 re PR fortran/25045 ([4.1 only] DIM argument of PRODUCT is not optional)
2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * check.c (dim_check):  Perform all checks if dim is optional.
        (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
        to check dim argument.
        (check_reduction):  Likewise.

2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * optional_dim.f90:  New test.

From-SVN: r110994
2006-02-14 19:25:36 +00:00
Tobias Schlüter 89031799f4 re PR fortran/26277 (false warning about unused label for a warning used in err=)
fortran/
	PR fortran/26277
	* io.c (match_ltag): Mark label as referenced.
testsuite/
	PR fortran/26277
	* gfortran.dg/label_4.f90: New.

From-SVN: r110993
2006-02-14 20:21:07 +01:00
Roger Sayle fb9c6d49ff dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU and GEU.
* dojump.c (do_compare_rtx_and_jump): Also handle multi-word GTU
	and GEU.

From-SVN: r110992
2006-02-14 17:54:41 +00:00
Adam Nemet de7f492b61 * simplify-rtx.c (simplify_subreg): Combine SUBREG and TRUNCATE.
From-SVN: r110990
2006-02-14 17:45:55 +00:00
Rainer Orth 1cf0118daf re PR bootstrap/26053 (Misdetection of COMDAT group support with GNU as and non-GNU ld)
PR bootstrap/26053
	* configure.ac (HAVE_COMDAT_GROUP): Don't assume non-GNU linkers
	support COMDAT group.
	* configure: Regenerate.

From-SVN: r110985
2006-02-14 16:46:04 +00:00
Jakub Jelinek 6c7a4dfdb6 re PR fortran/25162 (Issue with OpenMP COPYIN and gfortran)
gcc/fortran/
2006-02-14  Jakub Jelinek  <jakub@redhat.com>
	    Richard Henderson  <rth@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>

	* invoke.texi: Document -fopenmp.
	* gfortran.texi (Extensions): Document OpenMP.

	Backport from gomp-20050608-branch
	* trans-openmp.c: Call build_omp_clause instead of
	make_node when creating OMP_CLAUSE_* trees.
	(gfc_trans_omp_reduction_list): Remove argument 'code'.
	Adjust all callers.

	* trans.h (build4_v): Define.
	* trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes.
	Call build3_v to create OMP_SECTIONS nodes.

	PR fortran/25162
	* openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced
	on all symbols added to the variable list.

	* openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC
	procedure symbol in REDUCTION.

	* trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add
	for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE.

	* trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument.  If PBLOCK
	is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in
	that statement block.
	(gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do
	for non-ordered non-static combined loops.
	(gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do.

	* openmp.c: Include target.h and toplev.h.
	(gfc_match_omp_threadprivate): Emit diagnostic if target does
	not support TLS.
	* Make-lang.in (fortran/openmp.o): Add dependencies on
	target.h and toplev.h.

	* trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT.
	* trans-openmp.c (gfc_omp_privatize_by_reference): Make
	DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT.
	(gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT.
	(gfc_trans_omp_variable): New function.
	(gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it.
	* trans.h (GFC_DECL_RESULT): Define.

	* trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function.
	* f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define.
	* trans.h (gfc_omp_firstprivatize_type_sizes): New prototype.

	* trans-openmp.c (gfc_omp_privatize_by_reference): Return
	true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set.
	(gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New
	functions.
	(gfc_trans_omp_clauses): Add WHERE argument.  Call
	gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list
	for reductions.
	(gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
	gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
	gfc_trans_omp_sections, gfc_trans_omp_single): Adjust
	gfc_trans_omp_clauses callers.

	* openmp.c (omp_current_do_code): New var.
	(gfc_resolve_omp_do_blocks): New function.
	(gfc_resolve_omp_parallel_blocks): Call it.
	(gfc_resolve_do_iterator): Add CODE argument.  Don't propagate
	predetermination if argument is !$omp do or !$omp parallel do
	iteration variable.
	* resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks
	for EXEC_OMP_DO.  Adjust gfc_resolve_do_iterator caller.
	* fortran.h (gfc_resolve_omp_do_blocks): New prototype.
	(gfc_resolve_do_iterator): Add CODE argument.

	* trans.h (gfc_omp_predetermined_sharing,
	gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
	prototypes.
	(GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define.
	* trans-openmp.c (gfc_omp_predetermined_sharing,
	gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New
	functions.
	* trans-common.c (build_equiv_decl, build_common_decl,
	create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls.
	* trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE
	on the decl.
	* f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING,
	LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR,
	LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define.

	* openmp.c (resolve_omp_clauses): Remove extraneous comma.

	* symbol.c (check_conflict): Add conflict between cray_pointee and
	threadprivate.
	* openmp.c (gfc_match_omp_threadprivate): Fail if
	gfc_add_threadprivate returned FAILURE.
	(resolve_omp_clauses): Diagnose Cray pointees in SHARED,
	{,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in
	{FIRST,LAST}PRIVATE and REDUCTION clauses.

	* resolve.c (omp_workshare_flag): New variable.
	(resolve_function): Diagnose use of non-ELEMENTAL user defined
	function in WORKSHARE construct.
	(resolve_code): Cleanup forall_save use.  Make sure omp_workshare_flag
	is set to correct value in different contexts.

	* openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing
	variable name.
	(resolve_omp_atomic): Likewise.

	PR fortran/24493
	* scanner.c (skip_free_comments): Set at_bol at the beginning of the
	loop, not before it.
	(skip_fixed_comments): Handle ! comments in the middle of line here
	as well.
	(gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if
	not at BOL.
	(gfc_next_char_literal): Fix expected canonicalized *$omp string.

	* trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit
	initialization to build OMP_FOR instead of build.

	* trans-decl.c (gfc_gimplify_function): Invoke
	diagnose_omp_structured_block_errors.

	* trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER.
	(gfc_trans_omp_ordered): Use OMP_ORDERED.

	* gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks,
	gfc_resolve_omp_parallel_blocks): New prototypes.
	* resolve.c (resolve_blocks): Renamed to...
	(gfc_resolve_blocks): ... this.  Remove static.
	(gfc_resolve_forall): Adjust caller.
	(resolve_code): Only call gfc_resolve_blocks if code->block != 0
	and not for EXEC_OMP_PARALLEL* directives.  Call
	gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives.
	Call gfc_resolve_do_iterator if resolved successfully EXEC_DO
	iterator.
	* openmp.c: Include pointer-set.h.
	(omp_current_ctx): New variable.
	(gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New
	functions.
	* Make-lang.in (fortran/openmp.o): Depend on pointer-set.h.

	* openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor,
	look up symbol if it exists, use its name instead and, if it is not
	INTRINSIC, issue diagnostics.

	* parse.c (parse_omp_do): Handle implied end do properly.
	(parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO,
	return it instead of continuing.

	* trans-openmp.c (gfc_trans_omp_critical): Update for changed
	operand numbering.
	(gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do,
	gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare,
	gfc_trans_omp_sections, gfc_trans_omp_single): Likewise.

	* trans.h (gfc_omp_privatize_by_reference): New prototype.
	* f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine
	to gfc_omp_privatize_by_reference.
	* trans-openmp.c (gfc_omp_privatize_by_reference): New function.

	* trans-stmt.h (gfc_trans_omp_directive): Add comment.

	* openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument.
	Disallow COMMON matching if it is set.
	(gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers.
	(resolve_omp_clauses): Show locus in error messages.  Check that
	variable types in reduction clauses are appropriate for reduction
	operators.

	* resolve.c (resolve_symbol): Don't error if a threadprivate module
	variable isn't SAVEd.

	* trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY.
	Fix typo in condition.  Fix DOVAR initialization.

	* openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor
	rather than .min. etc.

	* trans-openmpc.c (omp_not_yet): Remove.
	(gfc_trans_omp_parallel_do): Keep listprivate clause on parallel.
	Force creation of BIND_EXPR around the workshare construct.
	(gfc_trans_omp_parallel_sections): Likewise.
	(gfc_trans_omp_parallel_workshare): Likewise.

	* types.def (BT_I16, BT_FN_I16_VPTR_I16,
	BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add.

	* trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT.
	(gfc_trans_omp_code): New function.
	(gfc_trans_omp_do): Use it, remove omp_not_yet uses.
	(gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise.
	(gfc_trans_omp_sections): Likewise.  Only treat empty last section
	specially if lastprivate clause is present.
	* f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP
	builtin.

	* trans-openmp.c (gfc_trans_omp_variable_list): Update for
	OMP_CLAUSE_DECL name change.
	(gfc_trans_omp_do): Likewise.

	* trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION
	clauses.
	(gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding
	sync builtins directly.
	(gfc_trans_omp_single): Build OMP_SINGLE statement.

	* trans-openmp.c (gfc_trans_add_clause): New.
	(gfc_trans_omp_variable_list): Take a tree code and build the clause
	node here.  Link it to the head of a list.
	(gfc_trans_omp_clauses): Update to match.
	(gfc_trans_omp_do): Use gfc_trans_add_clause.

	* trans-openmp.c (gfc_trans_omp_clauses): Change second argument to
	gfc_omp_clauses *.  Use gfc_evaluate_now instead of creating
	temporaries by hand.
	(gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros.
	(gfc_trans_omp_do): New function.
	(gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL.
	(gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller.
	Use buildN_v macros.
	(gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections,
	gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections,
	gfc_trans_omp_single, gfc_trans_omp_workshare): New functions.
	(gfc_trans_omp_directive): Use them.
	* parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP.
	* openmp.c (resolve_omp_clauses): Check for list items present
	in multiple clauses.
	(resolve_omp_do): Check that iteration variable is not THREADPRIVATE
	and is not present in any clause variable lists other than PRIVATE
	or LASTPRIVATE.

	* gfortran.h (symbol_attribute): Add threadprivate bit.
	(gfc_common_head): Add threadprivate member, change use_assoc
	and saved into char to save space.
	(gfc_add_threadprivate): New prototype.
	* symbol.c (check_conflict): Handle threadprivate.
	(gfc_add_threadprivate): New function.
	(gfc_copy_attr): Copy threadprivate.
	* trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary
	if IF or NUM_THREADS is constant.  Create OMP_CLAUSE_SCHEDULE and
	OMP_CLAUSE_ORDERED.
	* resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol
	outside a module and not in COMMON has is not SAVEd.
	(resolve_equivalence): Ensure THREADPRIVATE objects don't get
	EQUIVALENCEd.
	* trans-common.c: Include target.h and rtl.h.
	(build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
	* trans-decl.c: Include rtl.h.
	(gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE.
	* dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE.
	* Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H).
	(fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H).
	* openmp.c (gfc_match_omp_variable_list): Ensure COMMON block
	is from current namespace.
	(gfc_match_omp_threadprivate): Rewrite.
	(resolve_omp_clauses): Check some clause restrictions.
	* module.c (ab_attribute): Add AB_THREADPRIVATE.
	(attr_bits): Add THREADPRIVATE.
	(mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate.
	(load_commons, write_common, write_blank_common): Adjust for type
	change of saved, store/load threadprivate bit from the integer
	as well.

	* types.def (BT_FN_UINT_UINT): New.
	(BT_FN_VOID_UINT_UINT): Remove.

	* trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier,
	gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master,
	gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions.
	(gfc_trans_omp_directive): Use them.

	* openmp.c (expr_references_sym): Add SE argument, don't look
	into SE tree.
	(is_conversion): New function.
	(resolve_omp_atomic): Adjust expr_references_sym callers.  Handle
	promoted expressions.
	* trans-openmp.c (gfc_trans_omp_atomic): New function.
	(gfc_trans_omp_directive): Call it.

	* f95-lang.c (builtin_type_for_size): New function.
	(gfc_init_builtin_functions): Initialize synchronization and
	OpenMP builtins.
	* types.def: New file.
	* Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and
	fortran/types.def.

	* trans-openmp.c: Rename GOMP_* tree codes into OMP_*.

	* dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name
	is NULL.

	* dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New
	functions.
	(gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes.

	* parse.c (parse_omp_do): Call pop_state before next_statement.
	* openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do):
	New functions.
	(gfc_resolve_omp_directive): Call them.
	* match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement
	leaves an OpenMP structured block or if EXIT terminates !$omp do
	loop.

	* Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o.
	(F95_OBJS): Add fortran/trans-openmp.o.
	(fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS).
	* lang.opt: Add -fopenmp option.
	* options.c (gfc_init_options): Initialize it.
	(gfc_handle_option): Handle it.
	* gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL,
	ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER,
	ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO,
	ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE,
	ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE,
	ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED,
	ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS,
	ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION,
	ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New
	statement codes.
	(OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE,
	OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN,
	OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT,
	OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV,
	OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND,
	OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM):
	New OpenMP variable list types.
	(gfc_omp_clauses): New typedef.
	(gfc_get_omp_clauses): Define.
	(EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER,
	EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO,
	EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE,
	EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE,
	EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT,
	EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes.
	(struct gfc_code): Add omp_clauses, omp_name, omp_namelist
	and omp_bool fields to ext union.
	(flag_openmp): Declare.
	(gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes.
	* scanner.c (openmp_flag, openmp_locus): New variables.
	(skip_free_comments, skip_fixed_comments, gfc_next_char_literal):
	Handle OpenMP directive lines and conditional compilation magic
	comments.
	* parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state.
	* parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic,
	parse_omp_structured_block): New functions.
	(next_free, next_fixed): Parse OpenMP directives.
	(case_executable, case_exec_markers, case_decl): Add ST_OMP_*
	codes.
	(gfc_ascii_statement): Handle ST_OMP_* codes.
	(parse_executable): Rearrange the loop slightly, so that
	parse_omp_do can return next_statement.
	* match.h (gfc_match_omp_eos, gfc_match_omp_atomic,
	gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do,
	gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered,
	gfc_match_omp_parallel, gfc_match_omp_parallel_do,
	gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare,
	gfc_match_omp_sections, gfc_match_omp_single,
	gfc_match_omp_threadprivate, gfc_match_omp_workshare,
	gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes.
	* resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives.
	(resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_*
	directives.
	* trans.c (gfc_trans_code): Call gfc_trans_omp_directive for
	EXEC_OMP_* directives.
	* st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing.
	* trans-stmt.h (gfc_trans_omp_directive): New prototype.
	* openmp.c: New file.
	* trans-openmp.c: New file.

gcc/testsuite/
2006-02-14  Jakub Jelinek  <jakub@redhat.com>
	    Diego Novillo  <dnovillo@redhat.com>
	    Uros Bizjak  <uros@kss-loka.si>

	* gfortran.dg/gomp: New directory.

libgomp/
2006-02-14  Jakub Jelinek  <jakub@redhat.com>

	* testsuite/libgomp.fortran/vla7.f90: Add -w to options.
	Remove tests for returning assumed character length arrays.

Co-Authored-By: Diego Novillo <dnovillo@redhat.com>
Co-Authored-By: Richard Henderson <rth@redhat.com>
Co-Authored-By: Uros Bizjak <uros@kss-loka.si>

From-SVN: r110984
2006-02-14 17:38:03 +01:00
Roger Sayle 1dc5d842d4 re PR middle-end/26279 (ICE in do_compare_rtx_and_jump)
PR middle-end/26279
	PR middle-end/26280
	PR middle-end/26283
	* dojump.c (do_compare_rtx_and_jump): Handle multi-word LE.

From-SVN: r110983
2006-02-14 16:26:16 +00:00
Volker Reichelt 6aed477a55 call.c (standard_conversion): Return NULL instead of 0.
* call.c (standard_conversion): Return NULL instead of 0.
	(build_user_type_conversion_1): Likewise.
	(tourney): Likewise.
	* decl.c (redeclaration_error_message): Likewise.
	* error.c (language_to_string): Likewise.

From-SVN: r110976
2006-02-14 15:54:34 +00:00
Daniel Berlin 98035a75ac re PR tree-optimization/26260 (PTA is slow with large structs (hits clisp))
2006-02-14  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/26260

	* doc/invoke.texi (max-fields-for-field-sensitive): Document
	param.
	* params.h (MAX_FIELDS_FOR_FIELD_SENSITIVE): New.
	* params.def (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE): Ditto.
	* tree-ssa-structalias.c (create_variable_info_for): Use
	MAX_FIELDS_FOR_FIELD_SENSITIVE.

From-SVN: r110972
2006-02-14 14:49:13 +00:00
Zdenek Dvorak b076a3fd74 Add forgotten file.
From-SVN: r110965
2006-02-14 13:51:51 +00:00
Zdenek Dvorak 1768461812 invoke.texi (-fprefetch-loop-arrays, [...]): Document.
* doc/invoke.texi (-fprefetch-loop-arrays, -fprefetch-loop-arrays-rtl):
	Document.
	* tree-ssa-loop-niter.c (number_of_iterations_ne,
	number_of_iterations_lt, number_of_iterations_cond): Remember the shape
	of the ending condition.
	* tree-ssa-loop-manip.c: Include params.h.
	(build_if_stmt, can_unroll_loop_p, determine_exit_conditions,
	tree_unroll_loop): New functions.
	* tree-pass.h (pass_loop_prefetch): Declare.
	* loop.c (rest_of_handle_loop_optimize): Test for
	-fprefetch-loop-arrays-rtl.
	* tree-scalar-evolution.h (affine_iv): Moved to tree-flow.h.
	* timevar.def (TV_TREE_PREFETCH): New timevar.
	* tree-ssa-loop.c (tree_ssa_loop_prefetch, gate_tree_ssa_loop_prefetch,
	pass_loop_prefetch): New.
	* tree-cfgcleanup.c: Include tree-scalar-evolution.h.
	(cleanup_tree_cfg_loop): Call scev_reset.
	* common.opt (fprefetch-loop-arrays-rtl): Add.
	* tree-ssa-loop-prefetch.c: New file.
	* tree-outof-ssa.c (struct value_expr_d): Add expr_vars field.
	(new_temp_expr_table): Initialize expr_vars.
	(free_temp_expr_table): Cleanup expr_vars.
	(check_replaceable, find_replaceable_in_bb): Prevent accumulating
	expressions from being merged into one.
	* tree-flow.h (affine_iv): Moved from tree-scalar-evolution.h.
	(struct tree_niter_desc): Add control, bound and cmp fields.
	(tree_ssa_prefetch_arrays, can_unroll_loop_p, tree_unroll_loop):
	Declare.
	* Makefile.in (tree-ssa-loop-prefetch.o): Add.
	(tree-cfgcleanup.o): Add SCEV_H dependency.
	(tree-ssa-loop-manip.o): Add PARAMS_H dependency.
	* passes.c (init_optimization_passes): Add pass_loop_prefetch.

From-SVN: r110964
2006-02-14 12:22:11 +00:00
Richard Guenther 0a4288d92e re PR tree-optimization/26258 (Wrong alias information for struct addresses in PHIs)
2006-02-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26258
	* tree-ssa-structalias.c (find_func_aliases): Handle aggregates
	in PHI argument processing.

	* gcc.dg/torture/pr26258.c: New testcase.

From-SVN: r110963
2006-02-14 09:58:57 +00:00
Paolo Bonzini d1f8db0c36 [multiple changes]
2006-02-14  Paolo Bonzini  <bonzini@gnu.org>

	Sync from src:

	2005-12-27  Leif Ekblad  <leif@rdos.net>

        * configure.in: Add support for RDOS target.
        * configure: Regenerate.

2006-02-14  Paolo Bonzini  <bonzini@gnu.org>
            Andreas Schwab  <schwab@suse.de>

        * configure: Regenerate.

config:
2006-02-14  Paolo Bonzini  <bonzini@gnu.org>
            Andreas Schwab  <schwab@suse.de>

        * acx.m4 (NCN_STRICT_CHECK_TARGET_TOOLS): Use correct program name.
        (ACX_CHECK_INSTALLED_TARGET_TOOL): Likewise, and always set $1.


Co-Authored-By: Andreas Schwab <schwab@suse.de>

From-SVN: r110961
2006-02-14 09:36:24 +00:00
Adam Nemet e963b86613 simplify-rtx.c (simplify_unary_operation_1): Return new expression in the requested machine mode.
* simplify-rtx.c (simplify_unary_operation_1) <TRUNCATE>: Return
	new expression in the requested machine mode.

From-SVN: r110959
2006-02-14 07:10:35 +00:00
Roger Sayle 3bf78d3be2 optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx directly...
* optabs.c (expand_abs): Don't call do_jump_by_parts_greater_rtx
	directly, instead let do_compare_rtx_and_jump handle this for us.
	* expr.c (expand_expr_real_1): Likewise.
	* dojump.c (do_jump_by_parts_greater_rtx): Make static.  Move
	before do_jump_by_parts_greater.
	(do_jump_by_parts_greater): Move after do_jump_by_parts_greater_rtx.
	* expr.h (do_jump_by_parts_greater_rtx): Delete prototype.

From-SVN: r110954
2006-02-14 02:59:42 +00:00
John David Anglin 0fe4610e61 quadlib.c: Use defines instead of enum qfcmp_magic.
* pa/quadlib.c: Use defines instead of enum qfcmp_magic.

From-SVN: r110947
2006-02-14 00:22:04 +00:00
GCC Administrator 78492e61f0 Daily bump.
From-SVN: r110945
2006-02-14 00:17:46 +00:00
Zdenek Dvorak 8e1409e877 re PR rtl-optimization/26235 (FAIL: gcc.c-torture/execute/ieee/fp-cmp-8l.c execution at -O1, -O2 and -Os)
PR rtl-optimization/26235
	* loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats.
	(invariant_expr_equal_p): Handle 'i' and 'n' formats.  Fail on unknown
	format.

From-SVN: r110939
2006-02-13 23:19:49 +00:00
Jeff Law 74290e83e7 tree-vrp.c (extract_range_from_binary_expr): Remove handling of TRUTH_XOR_EPR.
* tree-vrp.c (extract_range_from_binary_expr): Remove handling of
	TRUTH_XOR_EPR.

From-SVN: r110938
2006-02-13 16:08:00 -07:00
Volker Reichelt b23e103b83 cp-tree.h (warn_hidden): Remove prototype.
* cp-tree.h (warn_hidden): Remove prototype.
	* class.c (warn_hidden): Make static.

From-SVN: r110936
2006-02-13 22:39:00 +00:00
Volker Reichelt ae00383baa cp-tree.h (build_type_conversion): Remove prototype.
* cp-tree.h (build_type_conversion): Remove prototype.
	* cvt.c (build_type_conversion): Add prototype, make static.

From-SVN: r110935
2006-02-13 22:37:02 +00:00
Volker Reichelt aa9d8196d7 cp-tree.h (push_tinst_level): Remove prototype.
* cp-tree.h (push_tinst_level): Remove prototype.
	(pop_tinst_level): Likewise.
	* pt.c (push_tinst_level): Add prototype, make static.
	(pop_tinst_level): Likewise.

From-SVN: r110934
2006-02-13 22:32:47 +00:00
Volker Reichelt 33fd4f49bc decl.c (grokdeclarator): Return NULL_TREE instead of 0.
* decl.c (grokdeclarator): Return NULL_TREE instead of 0.
	* typeck.c (unary_complex_lvalue): Likewise.

From-SVN: r110933
2006-02-13 22:05:40 +00:00
Volker Reichelt ebf0088aec lex.c (parse_strconst_pragma): Return error_mark_node instead of "(tree)-1" to indicate failure.
* lex.c (parse_strconst_pragma): Return error_mark_node instead of
	"(tree)-1" to indicate failure.  Simplify.
	(handle_pragma_interface): Test for error_mark_node instead of
	"(tree)-1".
	(handle_pragma_implementation): Likewise.

From-SVN: r110932
2006-02-13 22:00:35 +00:00
Andrew Pinski a7d6b76556 re PR fortran/26246 (return string length is being marked as TREE_STATIC and TREE_PUBLIC)
2006-02-13  Andrew Pinski  <pinskia@physics.uc.edu>
	    Jakub Jelinek  <jakub@redhat.com>

	PR fortran/26246
	* trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
	gfc_add_decl_to_function rather than gfc_finish_var_decl on length.

	* gfortran.dg/pr26246_1.f90: New test.
	* gfortran.dg/pr26246_2.f90: New test.

From-SVN: r110929
2006-02-13 22:31:18 +01:00
Jakub Jelinek 6f538523d1 re PR middle-end/26092 (ICE on const function pointer assigned to a builtin function)
PR middle-end/26092
	* gimplify.c (gimplify_call_expr): Don't call get_callee_fndecl
	twice if decl is a builtin.  When trying again, call get_callee_fndecl
	first to verify it is still a builtin.

	* gcc.c-torture/compile/20060208-1.c: New test.

From-SVN: r110927
2006-02-13 22:28:03 +01:00
Paul Thomas 2ed8d2241e re PR fortran/26074 (Module array cannot be automatic or assumed shape)
2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* resolve.c (resolve_symbol): Extend the requirement that module
	arrays have constant bounds to those in the main program.  At the
	same time simplify the array bounds, to avoiding trapping parameter
	array references, and exclude automatic character length from main
	and modules. Rearrange resolve_symbol and resolve_derived to put as
	each flavor together, as much as is possible and move all specific
	code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
	functions.
	(resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
	New functions to do work of resolve_symbol.
	(resolve_index_expr): New function that is called from resolved_symbol
	and is extracted from resolve_charlen.
	(resolve_charlen): Call this new function.
	(resolve_fl_derived): Renamed resolve_derived to be consistent with
	the naming of the new functions for the other flavours.  Change the
	charlen checking so that the style is consistent with other similar
	checks. Add the generation of the gfc_dt_list, removed from resolve_
	symbol.

	PR fortran/20861
	* resolve.c (resolve_actual_arglist): Prevent internal procedures
	from being dummy arguments.

	PR fortran/20871
	* resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
	procedures from being dummy arguments.

	PR fortran/25083
	* resolve.c (check_data_variable): Add test that data variable is in
	COMMON.

	PR fortran/25088
	* resolve.c (resolve_call): Add test that the subroutine does not
	have a type.


2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* gfortran.dg/module_parameter_array_refs_1.f90: New test.
	* gfortran.dg/bad_automatic_objects_1.f90: New test.
	* gfortran.dg/automatic_module_variable.f90: Change error message.

	PR fortran/20861
	* gfortran.dg/internal_dummy_1.f90: New test.

	PR fortran/20871
	* gfortran.dg/elemental_non_intrinsic_dummy_1.f90: New test.


	PR fortran/25083
	* gfortran.dg/uncommon_block_data_1.f90: New test.
	* gfortran.dg/equiv_constraint_7.f90: Correct non-compliance of test
	with standard.

	PR fortran/25088
	* gfortran.dg/typed_subroutine_1.f90: New test.

From-SVN: r110926
2006-02-13 21:22:55 +00:00
Geoffrey Keating 7cdfcf600a Index: gcc/ChangeLog
2006-02-13  Geoffrey Keating  <geoffk@apple.com>

	* dwarf2out.c (base_type_die): Don't add AT_name here.
	(subrange_type_die): Don't add AT_name here.
	(modified_type_die): Rearrange code flow.  Do add AT_name here.

Index: gcc/testsuite/ChangeLog
2006-02-13  Geoffrey Keating  <geoffk@apple.com>

	* objc.dg/dwarf-1.m: New.

From-SVN: r110925
2006-02-13 21:17:59 +00:00
Zdenek Dvorak bd361d85c7 re PR rtl-optimization/26247 (gcc.dg/tree-ssa/gen-vect-26.c, 28 and 32. int_mode_for_mode ICE strict_low_part loop-invariant)
PR rtl-optimization/26247
	PR rtl-optimization/26248
	* loop-invariant.c (may_assign_reg_p): Do not allow VOIDmode.

From-SVN: r110924
2006-02-13 20:27:44 +00:00
Richard Sandiford 0977d3fedf floatunditf.c: Use if __LDBL_MANT_DIG__ == 113.
* config/floatunditf.c: Use if __LDBL_MANT_DIG__ == 113.
	* config/fixtfdi.c: Likewise.
	* config/fixunstfdi.c: Likewise.
	* config/floatditf.c: Likewise.

From-SVN: r110923
2006-02-13 19:56:21 +00:00
Roger Sayle 840992bdc2 re PR middle-end/24427 (missing optimization opportunity with binary operators)
PR middle-end/24427
	* fold-const.c (fold_binary) <BIT_IOR_EXPR>: Transform (X&C1)|C2
	into (X,C2) if C1 is a subset of the bits of C2.  Transform
	(X&C1)|C2 into X|C2 if C1|C2 == ~0.  Canonicalize (X&C1)|C2 as
	(X&(C1&~C2))|C2.
	<BIT_AND_EXPR>: Canonicalize (X|C1)&C2 as (X&C2)|(C1&C2).

	* gcc.dg/tree-ssa/andor-1.c: New test case.

From-SVN: r110918
2006-02-13 18:33:32 +00:00
Josh Conner 4c553323a6 re PR target/25376 (section attribute doesn't work on darwin)
PR target/25376
* varasm.c (function_section): Check for section name before
calling select_section on targets that define
USE_SELECT_SECTION_FOR_FUNCTIONS.  On other targets, use
unlikely_text_section instead of hot_function_section if
first_function_block_is_cold.
* gcc.dg/pr25376.c: New test.

* gcc.c-torture/compile/pr23237.c: Only compile test -- don't
assemble.
* lib/target-supports.exp (check_named_sections_available):
Only compile named-sections test -- don't assemble.

From-SVN: r110917
2006-02-13 18:12:17 +00:00
Joern Rennecke e98aa197b7 Add PR marker for:
PR middle-end/25335
	* reload1.c (gen_reload): Also use find_replacement in UNARY_P case.

From-SVN: r110916
2006-02-13 15:32:57 +00:00
J"orn Rennecke d0ab13fd8b * reload1.c (gen_reload): Also use find_replacement in UNARY_P case.
From-SVN: r110915
2006-02-13 15:31:31 +00:00
Zdenek Dvorak 3e8b04461f re PR rtl-optimization/26222 (build failuring in libjava)
PR rtl-optimization/26222
	* function.c (assign_stack_temp_for_type): Do not reuse stack slots
	after tree->rtl expansion.
	* loop-invariant.c (move_invariant_reg): Use force_operand on rhs
	before passing it to emit_move_insn.

From-SVN: r110912
2006-02-13 11:21:23 +00:00
Volker Reichelt 28c84d634e re PR c++/26151 (duplicate 'duplicate' diagnostic)
PR c++/26151
	* parser.c (cp_parser_decl_specifier_seq): Check for duplicate
	decl-specifiers.  Remove extra check for duplicate 'friend'.
	* decl.c (grokdeclarator): Remove check for duplicate
	decl-specifiers.  Set longlong together with long_p.

From-SVN: r110911
2006-02-13 10:29:31 +00:00
Roger Sayle 5142e08b2f re PR libgomp/25936 (libgomp needs to link against rt on HPUX)
2006-02-12  Roger Sayle  <roger@eyesopen.com>
	    John David Anglin  <dave@hiauly1.hia.nrc.ca>

	PR libgomp/25936
	* configure.tgt: Link against -lrt for sem_init on HPUX v11 systems.
 

Co-Authored-By: John David Anglin <dave@hiauly1.hia.nrc.ca>

From-SVN: r110908
2006-02-13 02:33:37 +00:00
Gabriel Dos Reis d539b114d4 invoke.texi (-Write-strings): Document that it is enabled by default.
2006-02-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        * doc/invoke.texi (-Write-strings): Document that it is
	enabled by
        default. 
        * c.opt (-Wwrite-strings): Declare variable
	warn_write_strings.
        Clarify documentation.
        * c-common.h (warn_write_strings): Remove.
        * c-common.c (warn_write_strings): Likewise.
        * c-opts.c (c_common_init_options): Enable -Wwrite-strings by
        default for C++.

testsuite/
2006-02-12  Gabriel Dos Reis  <gdr@integrable-solutions.net>

        * g++.dg/warn/no-write-strings.C: New test.
        * g++.dg/warn/write-strings.C: Likewise.
        * g++.dg/warn/write-strings-default.C: Likewise.

From-SVN: r110907
2006-02-13 01:57:29 +00:00
Roger Sayle feb0478035 re PR middle-end/25724 (Emits call to __cmpdi2 for long long comparison in switches)
PR middle-end/25724
	* dojump.c (do_jump): Call do_compare_rtx_and_jump.
	(do_jump_parts_zero_rtx): New function renamed from
	do_jump_parts_equality_rtx.  Made static.  Add a mode argument.
	(do_jump_parts_equality_rtx): New function split out from
	do_jump_parts_equality.  Old implementation renamed as above.
	Call do_jump_parts_zero_rtx if either operand is zero.
	(do_jump_parts_equality): Call do_jump_parts_equality_rtx to
	do all of the heavy lifting.
	(do_compare_rtx_and_jump): Handle multi-word comparisons by
	calling either do_jump_by_parts_greater_rtx or
	do_jump_by_parts_equality_rtx.
	* expr.h (do_jump_by_parts_equality_rtx): Remove prototype.
	* expmed.c (do_cmp_and_jump): Now multi-word optimization has
	moved to do_compare_rtx_and_jump, call it directly.
	* stmt.c (do_jump_if_equal): Remove static prototype.  Add a
	mode argument.  Call do_compare_rtx_and_jump.
	(emit_case_nodes): Update calls to do_jump_if_equal.

From-SVN: r110906
2006-02-13 01:55:37 +00:00
GCC Administrator c0c84a897e Daily bump.
From-SVN: r110904
2006-02-13 00:17:49 +00:00
Zdenek Dvorak 4b06592a97 re PR rtl-optimization/26225 (GCC error: in emit_move_multi_word, at expr.c:3053)
PR rtl-optimization/26225
	* loop-invariant.c (may_assign_reg_p): Do not allow BLKmode operands.

From-SVN: r110898
2006-02-13 00:02:37 +00:00
Zdenek Dvorak 00f70f98e9 re PR rtl-optimization/26232 (cc0 targets broken; loop-invariants-move code doesn't handle cc0.)
PR rtl-optimization/26232
	* loop-invariant.c (find_invariant_insn): Ignore insns that set CC0.

From-SVN: r110897
2006-02-12 22:32:33 +00:00
Janne Blomqvist 82b8244c51 re PR libfortran/25949 (Unbounded I/O buffer memory usage for formatted IO)
2006-02-12  Janne Blomqvist  <jb@gcc.gnu.org>

	PR libgfortran/25949
	* io/io.h: Add set function pointer to struct stream.  
	* io/unix.c (fd_seek): Only update offset, don't seek.
	(fd_sset): New function.
	(fd_read): Call lseek directly if necessary.
	(fd_write): Likewise.
	(fd_open): Set pointer to fd_sset.
	(mem_set): New function.
	(open_internal): Set pointer to mem_set.
	* io/transfer.c (write_block_direct): Rename to write_buf, add
	error return, non-pointer length argument.
	(unformatted_write): Update to use write_buf.
	(us_write): Simplify by using swrite instead of salloc_w.
	(write_us_marker): New function.
	(new_record_w): Use sset instead of memset, use write_us_marker,
	simplify by using swrite instead of salloc_w.

From-SVN: r110895
2006-02-12 21:59:32 +02:00
Erik Edelmann 5b0b72518b re PR fortran/25806 (problems with functions returning array pointers?)
fortran/
2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25806
        * trans-array.c (gfc_trans_allocate_array_storage): New argument
        dealloc; free the temporary only if dealloc is true.
        (gfc_trans_allocate_temp_array): New argument bool dealloc, to be 
        passed onwards to gfc_trans_allocate_array_storage.
        (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to
        gfc_trans_allocate_temp_array.
        * trans-array.h (gfc_trans_allocate_temp_array): Update function
        prototype.
        * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc'
        to gfc_trans_allocate_temp_array to false in case of functions
        returning pointers.
        (gfc_trans_arrayfunc_assign): Return NULL for functions returning
        pointers.


testsuite/
2006-02-12  Erik Edelmann  <eedelman@gcc.gnu.org>

        PR fortran/25806
        * gfortran.dg/ret_pointer_2.f90: New test.

From-SVN: r110893
2006-02-12 17:34:15 +00:00
David Edelsohn cac90078ea configure.in (enable_libgomp): Add AIX.
* configure.in (enable_libgomp): Add AIX.
        * configure: Regenerate.

From-SVN: r110892
2006-02-12 11:24:23 -05:00
Paolo Carlini ef6c9873ef re PR libstdc++/26211 ([DR 419, US 137 / US 139] basic_istream::tellg, seekg are unformatted input functions)
2006-02-12  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/26211
	* include/bits/istream.tcc (basic_istream<>::tellg, seekg(pos_type),
	seekg(off_type, ios_base::seekdir)): Construct a sentry, as per
	27.6.1.3/1.
	* testsuite/27_io/basic_istream/seekg/char/26211.cc: New.
	* testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc: Likewise.
	* testsuite/27_io/basic_istream/tellg/char/26211.cc: Likewise.
	* testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc: Likewise.
	* testsuite/27_io/basic_istream/seekg/char/8348-1.cc: Adjust.
	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
	* testsuite/27_io/basic_istream/seekg/char/8348-2.cc: Likewise.
	* testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc: Likewise.
	* testsuite/27_io/basic_istream/tellg/char/8348.cc: Likewise.
	* testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc: Likewise.

From-SVN: r110891
2006-02-12 16:09:41 +00:00
Jason Merrill eecb13e859 re PR c++/24996 (ICE on throw code)
PR c++/24996
        * except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
        TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.

From-SVN: r110889
2006-02-12 11:02:00 -05:00
Jason Merrill 1d327c160a re PR tree-optimization/24365 (statement makes a memory store with complex)
PR tree-opt/24365
        * tree-inline.c (declare_return_variable): Just don't use the
        modify target if it's a gimple complex reg and the return slot
        isn't.

From-SVN: r110888
2006-02-12 03:01:04 -05:00
GCC Administrator eb63438c1b Daily bump.
From-SVN: r110885
2006-02-12 00:17:26 +00:00