2004-09-17 Jeffrey D. Oldham <oldham@codesourcery.com>
Zack Weinberg <zack@codesourcery.com>
* alias.c (find_base_decl): Remove unreachable case '3' block.
* expr.c (safe_from_p): Abort if passed a type.
* tree-gimple.c (recalculate_side_effects): Abort if passed
anything other than an expression.
* tree-ssa-pre.c (phi_translate): Return expr immediately if
is_gimple_min_invariant is true for it. Reorder cases for clarity.
Abort on un-handled tree classes.
(valid_in_set): Likewise.
* tree.c (tree_code_class_strings): New static data.
PR tree-optimization/17319
* tree-ssa-alias.c (compute_points_to_and_addr_escape): Also
examine pointers on the LHS of an assignment.
(collect_points_to_info_r): Handle RETURN_EXPR.
testsuite/ChangeLog
PR tree-optimization/17319
* gcc.dg/pr17319.c: New test.
law [Fri, 17 Sep 2004 21:16:07 +0000 (21:16 +0000)]
* tree-ssa-dom.c (const_and_copies_stack): New.
(dom_walk_block_data): Remove const_and_copies field.
(record_const_or_copy): No longer need to pass in varray_type *.
Use CONST_AND_COPIES_STACK rather than passed in block local stack.
Callers updated.
(record_equality): Similarly.
(restore_vars_to_original_value): Similarly. Revamp to use new
single global stack rather than per-block stacks.
(tree_ssa_dominator_optimize): Initialize the CONST_AND_COPIES_STACK.
(thread_across_edge): Remove now unused parameters.
(dom_opt_initialize_block_local_data): No longer test the block
local CONST_AND_COPIES.
(dom_opt_initialize_block): Push a marker on CONST_AND_COPIES_STACK.
* dbxout.c (get_lang_number): New.
(dbxout_init): Include lang number in N_SO stab.
* dbxout.h (N_SO_AS, N_SO_C, N_SO_ANSI_C, N_SO_CC, N_SO_FORTRAN,
N_SO_PASCAL, N_SO_FORTRAN90, N_SO_OBJC, N_SO_OBJCPLUS): New #define.
* c-tree.h (enum c_typespec_keyword): New.
(struct c_declspecs): Adjust description of "type". Remove
specbits, explicit_int_p and explicit_char_p. Rename
typedef_signed_p to explicit_signed_p. Add default_int_p, long_p,
short_p, signed_p, unsigned_p and complex_p.
(finish_declspecs): New.
* c-parse.in (datadef, datadecl, setspecs, decl, component_decl,
typename): Call finish_declspecs.
* c-decl.c (finish_declspecs): New.
(declspecs_add_type): Check for combinations which cannot occur in
valid specifier lists. Update comments.
(shadow_tag_warned): Remove checks done in finish_declspecs.
Don't report useless type name if type defaulted to int.
(grokdeclarator): Remove checks and actions done in
finish_declspecs. Don't allow for type being NULL. Update for
datastructures changes. Initialize decl_attr.
(build_null_declspecs, quals_from_declspecs): Update for
datastructures changes.
* doc/cfg.texi: Use @smallexample.
* doc/md.texi: Likewise.
* doc/tree-ssa.texi: Likewise.
* doc/extend.texi: Likewise. Use @r{} in comments.
* doc/trouble.texi: Use @r{} in comments.
paolo [Fri, 17 Sep 2004 08:42:07 +0000 (08:42 +0000)]
2004-09-17 Paolo Carlini <pcarlini@suse.de>
Andrea Arcangeli <andrea@suse.de>
* config/io/basic_file_stdio.cc (__basic_file<>::close)): Don't
call unnecessarily sync, that is fflush: the library, since 3.4.0
does not use buffered fread/fwrite.
* include/bits/fstream.tcc (basic_filebuf<>::overflow): Likewise.
PR tree-optimization/17528
* tree-ssa-alias.c (compute_flow_insensitive_aliasing): Do not
erase the may-alias set for a tag when merging it with
another.
law [Thu, 16 Sep 2004 19:06:12 +0000 (19:06 +0000)]
* tree-into-ssa.c (block_defs_stack): New toplevel varray.
(rewrite_block_data): Remove, no longer used.
(rewrite_initialize_block_local_data): Remove, no longer used.
(rewrite_initialize_block): Mark parameters as unused as needed.
Change references to the block local block_defs to be block_defs_stack.
Push a marker onto the block_defs_stack.
(ssa_rewrite_initialize_block): Similarly.
(rewrite_stmt, ssa_rewrite_stmt): Similarly.
(ssa_register_new_def): No longer needs varray argument. Use
block_defs_stack instead. No longer handle possibly null block_defs
varray. Reverse order of items we push on the stack to make it
easier to identify our marker.
(register_new_def): No longer handle possibly null block_defs
varray.
(rewrite_finalize_block): Revamp to look for markers in the global
block_defs_stack varray rather than wiping a block local varray.
Mark arguments as unused as needed.
(ssa_rewrite_finalize_block): Similarly.
(rewrite_into_ssa): Update initialization of dom walker structure
to reflect that we don't need block local data anymore. Initialize
the block_defs_stack varray.
(rewrite_ssa_into_ssa): Similarly.
* tree-ssa-dom.c (block_defs_stack): New toplevel varray.
(struct dom_walk_data): Kill block_defs field.
(tree_ssa_dominator_optimize): Initialize block_defs_stack.
(thread_across_edge): Use the global block_defs_stack instead of
the old block_defs varray.
(dom_opt_initialize_block_local_data): Update now that we don't have
block_defs field to check anymore.
(dom_opt_initialize_block): Push a marker onto block_defs_stack.
(restore_currdefs_to_original_value): Use the new block_defs_stack
instead of a block local varray.
(dom_opt_finalize_block): Similarly.
(record_equivalencs_from_phis): Similarly.
(optimize_stmt, register_definitions_for_stmt): Similarly.
* cfgloop.h (duplicate_loop): Add prototype.
* cfgloopmanip.c (duplicate_loop): Make non-static.
* lambda-code.c (perfect_nestify): Factor out test whether
we can handle this loop into separate function.
Call it.
(can_convert_to_perfect_nest): New function.
(replace_uses_of_x_with_y): Add modify_stmt call.
* tree-loop-linear.c (linear_transform_loops): Call
rewrite_into_loop_closed_ssa and free_df.
2004-09-16 Daniel Berlin <dberlin@dberlin.org>
* lambda-code.c (invariant_in_loop): is_gimple_min_invariant is
loop invariant as well.
(perfect_nestify): new function.
(gcc_loop_to_lambda_loop): New parameters to track lower bounds,
upper bounds, and steps.
Set outerinductionvar properly.
(gcc_loopnest_to_lambda_loopnest): Add loops and need_perfect
parameters.
Return NULL if we need a perfect loop and can't make one.
(lambda_loopnest_to_gcc_loopnest): Correct algorithm.
(not_interesting_stmt): New function.
(phi_loop_edge_uses_def): Ditto.
(stmt_uses_phi_result): Ditto.
(stmt_is_bumper_for_loop): Ditto.
(perfect_nest_p): Ditto.
(nestify_update_pending_stmts): Ditto.
(replace_uses_of_x_with_y): Ditto.
(stmt_uses_op): Ditto.
(perfect_nestify): Ditto.
* lambda-mat.c (lambda_matrix_id_p): New function.
* lambda-trans.c (lambda_trans_matrix_id_p): Ditto.
* lambda.h: Update prototypes.
* tree-loop-linear (linear_transform_loop): Use new
perfect_nest_p. Detect and ignore identity transform.
* tree-ssa-loop.c (pass_linear_transform): Use TODO_write_loop_closed.
2004-09-16 Sebastian Pop <pop@cri.ensmp.fr>
* tree-loop-linear.c (gather_interchange_stats): Add more comments.
Gather also strides of accessed data. Pass in the data references
array.
(try_interchange_loops): Add a new heuristic for handling the temporal
locality. Pass in the data references array.
(linear_transform_loops): Pass the data references array to
try_interchange_loops.
missing changelog entry
* cp-tree.h (struct lang_type_class): Make pure_virtuals a
VEC(tree).
(CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
comments.
* call.c (build_new_method_call): Don't confirm a pure virtual is
in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning.
* class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
(fixup_inline_methods, finish_struct): Likewise.
* decl.c (finish_method): Likewise.
* search.c (dfs_get_pure_virtuals, get_pure_virtuals):
CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
* typeck2.c (abstract_virtuals_error): Likewise. Truncate the
vector to avoid repeating the list in error messages.
* fold-const.c (fold): Fold difference of addresses.
(ptr_difference_const): Moved from tree-ssa-loop-ivopts, based on
get_inner_reference.
* tree-ssa-loop-ivopts.c (peel_address): Removed.
(ptr_difference_const): Moved to fold-const.c.
(split_address_cost): Use get_inner_reference instead of peel_address.
(ptr_difference_cost): Change type of diff to HOST_WIDE_INT.
* tree.h (ptr_difference_const): Export.
* tree-ssa-loop-ivopts.c (dump_iv, dump_use, dump_cand): Add induction
variable type to the dump. Fix indentation.
(idx_find_step): Handle nonconstant array_ref_element_size and
array_ref_low_bound.
(idx_record_use): Handle array_ref_element_size and
array_ref_low_bound.
(find_interesting_uses_stmt): Handle memory = nontrivial_expression
statements correctly.
(get_computation_at, iv_value): Do not unshare expressions here.
(rewrite_use_outer): Unshare the expression before it is emitted
to code.
* tree-ssa-loop-niter.c (unsigned_type_for, signed_type_for):
Moved to tree.c.
* tree.c (unsigned_type_for, signed_type_for): Moved from
tree-ssa-loop-niter.c. Use langhooks.
* tree.h (signed_type_for): Export.
PR/15364
* trans-io.c (transfer_array_component): New function.
(transfer_expr): For array fields, call transfer_array_component.
testsuite/
* gfortran.dg/der_array_io_1.f90: New test.
* gfortran.dg/der_array_io_2.f90: New test.
* gfortran.dg/der_array_io_3.f90: New test.
* cp-tree.h (struct lang_type_class): Make pure_virtuals a
VEC(tree).
(CLASSTYPE_INLINE_FRIENDS, CLASSTYPE_PURE_VIRTUALS): Update
comments.
* call.c (build_new_method_call): Don't confirm a pure virtual is
in CLASSTYPE_PURE_VIRTUALS. Reorder checks. Make it a warning.
* class.c (check_methods): CLASSTYPE_INLINE_FRIENDS is a VEC(tree).
(fixup_inline_methods, finish_struct): Likewise.
* decl.c (finish_method): Likewise.
* search.c (dfs_get_pure_virtuals, get_pure_virtuals):
CLASSTYPE_PURE_VIRTUALS is a VEC(tree).
* typeck2.c (abstract_virtuals_error): Likewise. Truncate the
vector to avoid repeating the list in error messages.
PR target/11572
* c-incpath.h (target_c_incpath_s): Add extra_pre_includes.
Add two parameters to extra_includes.
(C_INCPATH_INIT): Remove.
* c-incpath.c (register_include_chains): Call extra_pre_includes
before adding the standard include directory.
Update call to extra_includes.
(!defined TARGET_EXTRA_INCLUDES): Update
hook_void_charptr_charptr_int and add !define
TARGET_EXTRA_PRE_INCLUDES.
(!define TARGET_EXTRA_INCLUDES): Define as
hook_void_charptr_charptr_int.
(!define TARGET_EXTRA_PRE_INCLUDES): Likewise.
(target_c_incpath): Always declare.
* fixinclude.c (defined TARGET_EXTRA_INCLUDES): Declare a
empty function.
(define TARGET_EXTRA_PRE_INCLUDES): Likewise.
* config/darwin.h: (darwin_register_frameworks): Update for
the two new parameters.
(darwin_register_objc_includes): Add prototype.
(TARGET_EXTRA_PRE_INCLUDES): Define.
* config/darwin-c.c (darwin_register_objc_includes): New function.
(darwin_register_frameworks): Update for the two new parameters.
(target_c_incpath): Remove.
* config/t-darwin (darwin-c.o): Add $(PREPROCESSOR_DEFINES) to
the compile line.
* doc/tm.texi (TARGET_EXTRA_INCLUDES): Document the two new
parameters.
(TARGET_EXTRA_PRE_INCLUDES): Document.
* gcc.c (spec_function): Add replace-outfile.
(replace_outfile_spec_function): New function.
* config/darwin.h (LINK_SPEC): Add replace
-lobjc with -lobjc-gnu if -fgnu-runtime is
supplied.
* invoke.texi (replace-outfile): Document.
* predict.c (expr_expected_value, strip_builtin_expect): New function.
(tree_predict_by_opcode): Use it.
(tree_estimate_probability): Add, for now disabled,
strip_builtin_expect call.
wilson [Wed, 15 Sep 2004 23:26:33 +0000 (23:26 +0000)]
Fix linux kernel miscompilation.
PR target/17455
* config/ia64/ia64.c (ia64_function_ok_for_sibcall): Return false
if current_function_decl is a sibcall.
steven [Wed, 15 Sep 2004 21:47:45 +0000 (21:47 +0000)]
* Makefile.in (tree-ssa-dom.o): Depend on tree-ssa-propagate.h.
* tree-ssa-dom.c (cprop_into_stmt): Recompute TREE_INVARIANT
after propagating into an ADDR_EXPR.
gcc:
* attribs.c, builtins.c, c-format.c, c-pch.c, coverage.c,
except.c, fold-const.c, function.c, langhooks.c, params.c,
reload.c, reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
tree-dump.c, tree-mudflap.c, tree.c, varasm.c: Use %<, %> and %q
for quoting in diagnostics going through pretty-print.c. Use ''
for quoting in other diagnostic text.
* langhooks.c: Include intl.h. Mark text locating diagnostics for
translation.
* Makefile.in (langhooks.o): Update dependencies.
* pretty-print.h (pp_printf): Mark as accepting GCC diagnostic
formats.
* include/line-map.h (line_map_start): Add parameter names so
preceding comment makes sense.
(linemap_add): Remove from comment mention of non-existing parameter.
PR fortran/16485
* module.c (write_symbol): Don't fill in module name here.
(write_symbol0): Fill in here instead.
testsuite/
* gfortran.dg/same_name_1.f90: New test.
* gnu/java/net/protocol/file/Handler.java
(openConnection): Don't throw exception if host part for file: URI is
present. setURL() keeps file: protocol if ftp: protocol is not
available.
law [Wed, 15 Sep 2004 04:38:04 +0000 (04:38 +0000)]
* tree-ssa-dom.c (avail_exprs_stack): New global varray.
(struct dom_walk_block_data): Remove avail_exprs member.
(tree_ssa_dominator_optimize): Initialize avail_exprs_stack.
(lookup_avail_expr): No longer need to pass in address of
the block local available exprs stack. All callers changed.
(simplify_cond_and_lookup_avail_expr): Similarly.
(simplify_switch_and_lookup_avail_expr): Similarly.
(get_eq_expr_value, record_cond): Likewise.
(record_dominating_conditions): Likewise.
(update_rhs_and_lookup_avail_expr): Likewise.
(record_equivalences_from_stmt): Likewise.
(dom_opt_initialize_block_local_data): No longer test state of
block local avail_exprs.
(dom_opt_initialize_block): Mark unwind point in the global
avail_expr stack.
(remove_expressions_from_table): Update to unwind to the
most recent unwind marker in the global avail_expr stack.
All callers changed.
(dom_opt_finalize_block): Mark unwind point in the global
avail_expr stack as needed.
(record_cond): Push elements into the global avail_exprs stack.
PR c++/17324
* mangle.c (partially_mangled_name): New variable.
(partially_mangled_name_len): Likewise.
(save_partially_mangled_name): New function.
(restore_partially_mangled_name): Likewise.
(write_encoding): Save and restore partially mangled names around
calls to get_mostly_instantiated_function_type.
(write_unqualified_name): Likewise.
PR c++/17324
* g++.dg/template/mangle1.C: New test.