dberlin [Tue, 1 Mar 2005 17:59:06 +0000 (17:59 +0000)]
2005-03-01 Daniel Berlin <dberlin@dberlin.org>
* Makefile.in (tree-ssa-sink.o): New.
(OBJS-common): Add tree-ssa-sink.o.
* common.opt: Add -ftree-sink
* opts.c (decode_options): flag_tree_sink is set at O1 or higher.
* timevar.def (TV_TREE_SINK): new timevar.
* tree-flow.h (is_hidden_global_store): Prototype.
* tree-optimize.c (init_tree_optimization_passes): Add
pass_sink_code.
* tree-pass.h (pass_sink_code): New.
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move checking
for non-obvious global store store to is_hidden_global_store, and
call that new function.
* tree-ssa-sink.c: New file.
* doc/invoke.texi: Document -fdump-tree-sink and -ftree-sink.
* doc/passes.texi: Document forward store motion.
* testsuite/gcc.dg/tree-ssa/ssa-sink-1.c: New test
* testsuite/gcc.dg/tree-ssa/ssa-sink-2.c: New test
* testsuite/gcc.dg/tree-ssa/ssa-sink-3.c: New test
* testsuite/gcc.dg/tree-ssa/ssa-sink-4.c: New test
bothner [Tue, 1 Mar 2005 17:24:52 +0000 (17:24 +0000)]
PR java/8608
* check-init.c (wfl): Remove static.
(final_assign_error, check_init): Replace calls to parse_error_context
by plain error.
(check_init): Save, set, and restore input_location for each exp.
bothner [Tue, 1 Mar 2005 16:37:45 +0000 (16:37 +0000)]
* diagnostic.c (diagnostic_build_prefix): If USE_MAPPED_LOCATION
and we have a non-zero column-number, add it to the message.
Also factor out the diagnostic_kind_text.
rakdver [Tue, 1 Mar 2005 13:44:46 +0000 (13:44 +0000)]
* cfgloop.c (flow_loop_entry_edges_find, flow_loop_exit_edges_find,
flow_loop_pre_header_scan, flow_loop_pre_header_find,
flow_loop_scan): Removed.
(flow_loop_dump): Do not dump removed fields.
(flow_loop_free): Do not free removed fields.
(flow_loops_find): Flags argument removed. Do not call flow_loop_scan.
(loop_exit_edge_p): New function.
* cfgloop.h (struct loop): Removed fields pre_header, pre_header_edges,
num_pre_header_edges, entry_edges, num_entries, exit_edges,
num_exits, exits_doms.
(LOOP_TREE, LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES,
LOOP_EDGES, LOOP_ALL): Removed.
(flow_loop_scan): Declaration removed.
(loop_exit_edge_p, mark_loop_exit_edges): Declare.
* cfgloopmanip.c (create_loop_notes): Do not pass flags to
flow_loops_find.
* ifcvt.c (mark_loop_exit_edges): Moved to cfgloopanal.c.
(if_convert): Call flow_loops_find and flow_loops_free
when calling mark_loop_exit_edges.
* cfgloopanal.c (mark_loop_exit_edges): Moved from
ifcvt.c. Removed the flow_loops_find, flow_loops_free and
free_dominance_info calls.
* loop-init.c (flow_loops_find): Ditto.
* passes.c (rest_of_handle_branch_prob): Ditto.
* lambda-code.c (perfect_nestify): Do not call flow_loops_find.
* loop-unroll.c (analyze_insns_in_loop): Do not use
EDGE_LOOP_EXIT.
* predict.c (predict_loops): Do not call flow_loop_scan.
Use get_loop_exit_edges.
(tree_estimate_probability): Do not pass flags to flow_loops_find.
* tree-if-conv.c (bb_with_exit_edge_p): Take loop as argument.
Do not use EDGE_LOOP_EXIT.
(tree_if_convert_cond_expr, if_convertible_modify_expr_p): Pass loop
to bb_with_exit_edge_p.
(if_convertible_loop_p): Do not call flow_loop_scan. Use
loop->single_exit. Do not use EDGE_LOOP_EXIT. Pass loop
to bb_with_exit_edge_p.
(combine_blocks): Pass loop to bb_with_exit_edge_p. Do not use
EDGE_LOOP_EXIT.
* tree-loop-linear.c (linear_transform_loops): Do not call
flow_loop_scan. Use loop->single_exit.
* tree-vect-analyze.c (vect_analyze_operations): Use loop->single_exit.
(vect_analyze_loop_form): Do not call flow_loop_scan.
* tree-vect-transform.c (vect_update_ivs_after_vectorizer): Use
loop->single_exit.
(vect_do_peeling_for_loop_bound): Use loop_preheader_edge and
loop->single_exit.
* tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop,
slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p,
slpeel_tree_duplicate_loop_to_edge_cfg,
slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge):
Use loop_preheader_edge and loop->single_exit. Do not call
flow_loop_scan.
nickc [Tue, 1 Mar 2005 10:22:53 +0000 (10:22 +0000)]
(thumb_find_work_register): Check all of the argument registers to see if they
are free, and a couple of special cases where the last argument register but
can be proved to be available during the function's prologue.
(print_multi_reg, arm_compute_save_reg0_reg12_mask, output_return_instruction,
emit_multi_reg_push, thumb_pushpop, thumb_unexpanded_epilogue): Use unsigned
long as the type for the register bit-mask.
(thumb_compute_save_reg_mask): Likewise. Also use thumb_find_work_register()
to ensure that there is agreement about which work register is going to be
used in the prologue.
(thumb_output_function_prologue): Use unsigned long as the type for the
register bit-mask. Also delay pushing the link register if other high
registers are going to be pushed.
(thumb_compute_save_reg_mask, emit_multi_reg_push, print_multi-reg,
number_of_first_bit_set, thumb_pushpop): Remove redundant prototypes.
* cp-tree.g (THUNK_TARGET): Expand comment.
* method.c (use_thunk): Make sure we also use the target, if that
is a thunk.
testsuite:
PR c++/20232
* g++.dg/inherit/covariant12.C: New.
danglin [Tue, 1 Mar 2005 04:34:00 +0000 (04:34 +0000)]
PR target/19819
* pa.h (GO_IF_LEGITIMATE_ADDRESS): Allow allow hard registers during
and after reload in REG+REG indexed addresses without REG_POINTER
set in the base and not set in the index.
sayle [Tue, 1 Mar 2005 02:43:49 +0000 (02:43 +0000)]
PR tree-optimization/20216
* tree-chrec.c (tree_fold_factorial): Delete.
(tree_fold_binomial): Change argument list to take a return type
and change the type of K to unsigned int. Rewrite to avoid explicit
evaluation of factorials, and (recursively) calling fold to perform
compile-time arithmetic. Return NULL on (internal) overflow.
(chrec_evaluate): Change type of K to an unsigned int. Avoid
calling tree_fold_binomial unnecessarily. Return chrec_dont_know
if any intermediate calculation overflows.
(chrec_apply): Update call to chrec_evaluate.
pinskia [Mon, 28 Feb 2005 20:04:41 +0000 (20:04 +0000)]
2005-02-28 Andrew Pinski <pinskia@physics.uc.edu>
PR libobjc/20252
* Makefile.in (GTHREAD_FLAGS): Remove.
(ALL_CFLAGS): Remove usage of GTHREAD_FLAGS.
* thr-objc.c: Include config.h.
* configure.ac: Instead of looking at GCC's makefile, figure out if
GTHREAD_FLAGS should be defined by looking at the `thread model'
of the current gcc.
* configure: Regenerate.
* config.h.in: Regenerate.
kargl [Mon, 28 Feb 2005 00:38:12 +0000 (00:38 +0000)]
PR fortran/20058
* trans-types.c (gfc_max_integer_kind): Declare
(gfc_init_kinds): Initialize it.
* gfortran.h (gfc_max_integer_kind): extern it.
* primary.c (match_boz_constant): Use it; remove gfortran extension
of kind suffixes on BOZ literal constants
kargl [Sun, 27 Feb 2005 17:32:26 +0000 (17:32 +0000)]
* arith.c (gfc_check_real_range): Remove multiple returns
(check_result): New function.
(gfc_arith_uminus,gfc_arith_plus,gfc_arith_times,
gfc_arith_divide,gfc_arith_power,gfc_arith_minus): Use it.
jakub [Sun, 27 Feb 2005 17:13:28 +0000 (17:13 +0000)]
PR c++/20206
* decl.c (cxx_comdat_group): Put thunks for
TARGET_USE_LOCAL_THUNK_ALIAS_P (function) functions into the same
comdat group as the thunk target.
* g++.dg/opt/thunk2.C: New test.
* g++.dg/opt/covariant1.C: New test.
danglin [Sun, 27 Feb 2005 04:22:06 +0000 (04:22 +0000)]
* pa/elf.h, pa/som.h (ASM_OUTPUT_EXTERNAL): Use assemble_name_raw
instead of trying to save and restore TREE_SYMBOL_REFERENCED.
* pa/pa64-hpux.h (ASM_OUTPUT_TYPE_DIRECTIVE): Define.
(ASM_OUTPUT_EXTERNAL): Don't save and restore TREE_SYMBOL_REFERENCED.
neroden [Sat, 26 Feb 2005 21:43:33 +0000 (21:43 +0000)]
(top level)
Merged from libada-gnattools-branch:
2004-11-28 Nathanael Nerode <neroden@gcc.gnu.org>
* gnattools: New directory.
* Makefile.def: Add gnattools as a module, depending on target-libada.
* Makefile.in: Regenerate.
* configure.in: Include gnattools in host_tools; disable it if ada
is disabled.
* configure: Regenerate.
(gcc)
* configure.ac: Rename cc_for_cross_gnattools to host_cc_for_libada.
* configure: Regenerate.
* libada-mk.in: Remove CC; rename
cc_for_cross_gnattools / cc_set_by_configure to host_cc_for_libada.
(gcc/ada)
Partial merge from libada-gnattools-branch:
2004-12-02 Nathanael Nerode <neroden@gcc.gnu.org>
* Makefile.in: Move gnattools{1,1re,2,3,4} and corresponding flags
into code in gnattools/Makefile.in. Remove direct dependencies on
stamp-tools by tools clauses.
2004-12-02 Nathanael Nerode <neroden@gcc.gnu.org>
* config-lang.in: Add gnattools to $lang_dirs.
* Makefile.in: Remove use of cc_set_by_configure; just use
plain old CC from the top level in this case.
2005-01-30 Nathanael Nerode <neroden@gcc.gnu.org>
Merge from mainline at tag libada-gnattools-merge-20050129:
* configure.ac: Changes propagated from gcc/ada/Makefile.in.
* Makefile.in: Changes relocated from gcc/ada/Makefile.in.
2004-12-13 Nathanael Nerode <neroden@gcc.gnu.org>
* Makefile.in: Reinstate stamp-gnatlib check.
2004-12-02 Nathanael Nerode <neroden@gcc.gnu.org>
* Makefile.in: Inline gnattools{1,1-re,2,3,4} targets from
gcc/ada/configure.ac into gnattools-native and gnattools-cross
targets, collecting flags as appropriate from here,
gcc/ada/Makefile.in, gcc/ada/configure.ac, etc. Attempt to retain
identical behavior.
* configure.ac: Add necessary configure bits from
gcc/ada/configure.ac.
* configure: Regenerate.
2004-08-16 Nathanael Nerode <neroden@gcc.gnu.org>
* configure.ac: Replace AC_CANONICAL_SYSTEM with _BUILD, _HOST,
_TARGET. Replace _GCC_TOPLEV_NONCANONICAL_TARGET with
ACX_NONCANONICAL_TARGET, and replace now-redundant AC_SUBST.
* configure: Regenerate.
2004-07-18 Nathanael Nerode <neroden@gcc.gnu.org>
* Makefile.in, configure.ac: Remove libada-specific targets and
variables.
* configure: Regenerate.
* New directory, cloned from libada.
toon [Sat, 26 Feb 2005 18:33:11 +0000 (18:33 +0000)]
2005-02-26 Peter O'Gorman <peter@pogman.com>
Toon Moene <toon@moene.indiv.nluug.nl>
PR libgfortran/17748
* runtime/environ.c: Remove references to environ.
(show_variables): remove GFORTRAN_UNBUFFERED_* and
GFORTRAN_NAME_* because they require environ.
(pattern_scan): Remove function.
phython [Sat, 26 Feb 2005 16:07:49 +0000 (16:07 +0000)]
2005-02-26 James A. Morrison <phython@gcc.gnu.org>
* parse.y (function_invocation, variable-ref, make_plus_expression):
Pass location to tree_code_get_expression.
* treetree.c (tree_code_generate_return): Set EXPR_LOCUS on retval.
(tree_code_get_expression): Wrap variable references in NOP_EXPRs and
set EXPR_LOCATION on ret1.
* treetree.h (tree_code_get_expression): Take the location of the
expression as an argument.
phython [Sat, 26 Feb 2005 14:10:11 +0000 (14:10 +0000)]
2005-02-26 James A. Morrison <phython@gcc.gnu.org>
* treelang.texi: Treelang does have warnings.
* treetree.c (tree_code_create_function_prototype): Don't set
TREE_USED and set TREE_PUBLIC, DECL_EXTERNAL, and TREE_STATIC
as few times as needed on the function declaration.
(tree_code_create_function_initial): Don't set TREE_USED,
TREE_ADDRESSABLE, but set TREE_STATIC on the function declaration.
(tree_code_create_variable): Don't set TREE_USED on VAR_DECL.
(tree_code_get_expression): Set TREE_USED for variable references
and function calls.
phython [Sat, 26 Feb 2005 14:01:03 +0000 (14:01 +0000)]
2005-02-26 James A. Morrison <phython@gcc.gnu.org>
* parse.y: Do comparisons as the type of the first expression.
* treetree.c (tree_code_get_integer_value): Build integer constants
with the proper type.
rakdver [Sat, 26 Feb 2005 07:55:28 +0000 (07:55 +0000)]
* tree-ssa-dom.c (simple_iv_increment_p): New function.
(simplify_rhs_and_lookup_avail_expr, eliminate_redundant_computations):
Do not propagate value of iv before increment over the increment.
phython [Sat, 26 Feb 2005 00:25:52 +0000 (00:25 +0000)]
2005-02-25 James A. Morrrison <phython@gcc.gnu.org>
* treelang.texi: Remove extra contribution notice.
Split up some run-on sentences. Document function parameters
as optional. Indicate automatic variables can now be at any scope.
Mention literals are only signed if they are preceded by a unary
plus or minus. Clarify interoperability with C.
jules [Fri, 25 Feb 2005 22:32:56 +0000 (22:32 +0000)]
* gcc/config/elfos.h (MAKE_DECL_ONE_ONLY): Redefined to stop DECL_WEAK
from being used for symbols with vague linkage when
HAVE_GAS_COMDAT_GROUP is true.
sje [Fri, 25 Feb 2005 21:34:49 +0000 (21:34 +0000)]
PR target/19930
* doc/tm.texi (LIBGCC2_LONG_DOUBLE_TYPE_SIZE): Document.
(LIBGCC2_HAS_DF_MODE): New.
(LIBGCC2_HAS_XF_MODE): New.
(LIBGCC2_HAS_TF_MODE): New.
* libgcc2.h (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE.
(LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE.
* libgcc2.c (LIBGCC2_HAS_XF_MODE): New name for HAVE_XFMODE.
(LIBGCC2_HAS_TF_MODE): New name for HAVE_TFMODE.
(LIBGCC2_HAS_DF_MODE): New name for HAVE_DFMODE.
* config/ia64/t-ia64 (LIB1ASMFUNCS): Remove __compat
and add _fixtfdi, _fixunstfdi, _floatditf
* lib1funcs.asm: Remove L__compat. Add L_fixtfdi,
L_fixunstfdi, L_floatditf.
* config/ia64/hpux.h (LIBGCC2_HAS_XF_MODE): Define.
(LIBGCC2_HAS_TF_MODE): Define.
dnovillo [Fri, 25 Feb 2005 21:12:34 +0000 (21:12 +0000)]
PR tree-optimization/20204
* tree-into-ssa.c (insert_phi_nodes_for): Do not use
REWRITE_THIS_STMT markers on PHI nodes.
(rewrite_initialize_block): Likewise.
testsuite/ChangeLog
PR tree-optimization/20204
* testsuite/gcc.dg/pr20204.c: New test.
rakdver [Fri, 25 Feb 2005 17:09:12 +0000 (17:09 +0000)]
* tree-ssa-dom.c (simple_iv_increment_p): New function.
(simplify_rhs_and_lookup_avail_expr, eliminate_redundant_computations):
Do not propagate value of iv before increment over the increment.