* tree-outof-ssa.c (_elim_graph): Change the type of edge_list
to VEC(int,heap)*.
(new_elim_graph, clear_elim_graph, delete_elim_graph,
elim_graph_add_edge, elim_graph_remove_succ_edge,
FOR_EACH_ELIM_GRAPH_SUCC, FOR_EACH_ELIM_GRAPH_PRED): Use VEC
instead of VARRAY.
From-SVN: r100349
* ifcvt.c (noce_emit_move_insn): Construct a SET pattern directly
if the RHS isn't suitable for calling emit_move_insn.
Co-Authored-By: Richard Henderson <rth@redhat.com>
From-SVN: r100329
2005-05-29 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/char_pointer_assign.f90:
Test character-pointerassignments and pointer assignments.
* gfortran.dg/char_pointer_dummy.f90:
Test character-pointer dummy arguments.
* gfortran.dg/char_pointer_func.f90:
Test character-pointer function returns.
* gfortran.dg/char_pointer_dependency.f90:
Test character-pointer functions with dependencies.
From-SVN: r100325
2005-05-29 Paul Thomas <pault@gcc.gnu.org>
PR fortran/16939
PR fortran/17192
PR fortran/17193
PR fortran/17202
PR fortran/18689
PR fortran/18890
PR fortran/21297
* fortran/trans-array.c (gfc_conv_resolve_dependencies): Add string
length to temp_ss for character pointer array assignments.
* fortran/trans-expr.c (gfc_conv_variable): Correct errors in
dereferencing of characters and character pointers.
* fortran/trans-expr.c (gfc_conv_function_call): Provide string
length as return argument for various kinds of handling of return.
Return a char[]* temporary for character pointer functions and
dereference the temporary upon return.
From-SVN: r100324
* reg-stack.c (propagate_stack): Always copy the source stack to
the destination. This routine is now only called when this is safe.
(better_edge): New function split out from convert_regs_1 to
determine which of two edges is better to propagate across.
(convert_regs_1): We need only search for a best edge if the
stack layout hasn't been defined yet. Use better_edge to help
find beste. No longer traverse unnecessary edges.
From-SVN: r100323
2005-05-29 Keith Besaw <kbesaw@us.ibm.com>
* tree-ssa-alias.c (new_type_alias): New procedure to
create a type memory tag for a pointer with a may-alias
set determined from a variable declaration.
* tree-flow.h: export declaration of new_type_alias
* tree-optimize.c (init_tree_optimization_passes): document
that pass_may_alias cannot be called after pass_vectorize.
* tree-vect-transform (vect_create_data_ref_ptr): Call
new_type_alias when an type memory tag isn't available
for a reference.
(vectorizable_store): Use copy_virtual_operands to update
virtual defs in place (so that loop_version can be called).
Call mark_for_renaming for the virtual defs in case peeling
is done and virtual uses outside the loop need to be updated.
From-SVN: r100322
PR libfortran/20006
* io.c (format_item_1): Add check and extension warning for
$ edit descriptor.
* io/format.c (parse_format_list): Set repeat count of $ format
node to 1.
* io/transfer.c (read_sf): Add g.seen_dollar to the test
concerning advancing I/O.
(data_transfer_init): Likewise.
(finalize_transfer): Likewise.
From-SVN: r100314
PR tree-optimization/21562
* cfgexpand.c (construct_init_block): Deal properly with the case
of entry edge not pointing to very first basic block.
From-SVN: r100305
2005-05-28 Paolo Carlini <pcarlini@suse.de>
Revert:
2005-05-18 Paolo Carlini <pcarlini@suse.de>
Nathan Myers <ncm@cantrip.org>
PR libstdc++/19495
* include/bits/basic_string.h (_Raw_bytes_alloc): Rebind to
size_type instead of char and rename to _Raw_alloc.
* include/bits/basic_string.tcc (_Rep::_M_destroy, _Rep::_S_create):
Use the above.
* src/bitmap_allocator.cc: Add instantiation for size_type.
* src/mt_allocator.cc: Likewise.
* src/pool_allocator.cc: Likewise.
* include/ext/array_allocator.h: Tweak slightly, avoid assuming
the existence of an _Array::begin() and size() members.
* testsuite/ext/array_allocator/2.cc: Tweak to use an allocator
of size_type, instead of char, thus avoiding problems with
rebinds, not treated correctly by array_allocator.
From-SVN: r100304
* intrinsic.texi: added documentation for BIT_SIZE, BTEST, CHAR, CEILING
and CMPLX
Co-Authored-By: Steven G. Kargl <kargls@comcast.net>
From-SVN: r100297
* configure.ac: Check declarations for asprintf and vasprintf.
* config.in: Regenerate.
* configure: Likewise.
* charset.c (conversion_loop): Use XRESIZEVEC.
(convert_no_conversion): Likewise.
(convert_using_iconv): Likewise.
(init_iconv_desc): Cast return value of alloca.
(cpp_host_to_exec_charset): Use XNEWVEC.
(emit_numeric_escape): Use XRESIZEVEC.
(cpp_interpret_string): Use XNEWVEC.
(cpp_interpret_string): Use XRESIZEVEC.
(_cpp_interpret_identifier): Cast return value of alloca.
(_cpp_convert_input): Use XNEWVEC and XRESIZEVEC.
* directives.c (glue_header_name): Use XNEWVEC and XRESIZEVEC.
(parse_include): Use XNEWVEC.
(insert_pragma_entry): Rename local variable "new" to
"new_entry".
(save_registered_pragmas): Cast return value of xmemdup.
(destringize_and_run): Same for alloca.
(parse_assertion): Likewise.
(do_assert): Cast allocated storage to proper type.
(cpp_define): Likewise.
(_cpp_define_builtin): Likewise.
(cpp_undef): Likewise.
(handle_assertion): Likewise.
(cpp_push_buffer): Rename local variable "new" to "new_buffer".
* expr.c (CPP_UPLUS): Cast value to type cpp_ttype.
(CPP_UMINUS): Likewise.
(struct cpp_operator): Rename from struct operator.
(_cpp_expand_op_stack): Use XRESIZEVEC.
* files.c (pch_open_file): Use XNEWVEC.
(pch_open_file): Use XRESIZEVEC.
(read_file_guts): Use XNEWVEC and XRESIZEVEC.
(dir_name_of_file): Use XNEWVEC.
(make_cpp_file): Use XCNEW.
(make_cpp_dir): Likewise.
(allocate_file_hash_entries): USE XNEWVEC.
(cpp_included): Cast return value of htab_find_with_hash.
(append_file_to_dir): Use XNEWVEC.
(read_filename_string): Likewise. Use XRESIZEVEC too.
(read_name_map): Cast return value of alloca. Use XRESIZEVEC.
(remap_filename): Use XNEWVEC.
(struct pchf_entry): Move definition out of struct pchf_data.
(_cpp_save_file_entries): Use XCNEWVAR.
(_cpp_read_file_entries): Use XNEWVAR.
* identifiers.c (alloc_node): Use XOBNEW.
* init.c (cpp_create_reader): Use XCNEW.
(cpp_init_builtins): Cast of b->value to enum builtin_type.
(read_original_directory): Cast return value of alloca.
* lex.c (add_line_note): Use XRESIZEVEC.
(warn_about_normalization): Use XNEWVEC.
(_cpp_lex_direct): Cast node->directive_index to (enum cpp_ttype).
(new_buff): Use XNEWVEC.
* line-map.c (linemap_add): Use XRESIZEVEC.
* macro.c (builtin_macro): Cast return value of alloca.
(paste_tokens): Likewise.
(expand_arg): Use XNEWVEC and XRESIZEVEC.
(_cpp_save_parameter): Use XRESIZEVEC.
(create_iso_definition): Cast allocated storage to proper type.
(_cpp_create_definition): Likewise.
(cpp_macro_definition): Use XRESIZEVEC.
* makedepend.c (add_clm): Use XNEW.
(add_dir): Likewise.
* mkdeps.c (munge): Use XNEWVEC.
(deps_init): Use XCNEW.
(deps_add_target): Use XRESIZEVEC.
(deps_add_default_target): Cast return value of alloca.
(deps_add_dep): Use XRESIZEVEC.
(deps_add_vpath): Likewise. Use XNEWVEC too.
(deps_restore): Likewise.
* pch.c (save_idents): Use XNEW and XNEWVEC.
(cpp_save_state): Use XNEW.
(count_defs): Cast return value of htab_find.
(write_defs): Likewise.
(cpp_write_pch_deps): Use XNEWVEC.
(collect_ht_nodes): Use XRESIZEVEC.
(cpp_valid_state): Use XNEWVEC.
(save_macros): Use XRESIZEVEC. Cast return value of xmemdup.
* symtab.c (ht_create): Use XCNEW.
(ht_lookup_with_hash): Cast return value of obstack_copy0.
(ht_expand): Use XCNEWVEC.
* system.h (HAVE_DESIGNATED_INITIALIZERS): False if __cplusplus.
(bool): Do not define if __cplusplus.
From-SVN: r100295
* tree-ssa-dom.c (vrp_element_p): Define.
(vrp_hash_elt): Change the type of records to
VEC(vrp_element_p,heap).
(vrp_free): New.
(tree_ssa_dominator_optimize): Pass vrp_free to htab_create.
Update uses of VRP records.
(simplify_cond_and_lookup_avail_expr, record_range): Update
uses of VRP records.
From-SVN: r100293
PR c++/21614
* typeck.c (get_member_function_from_ptrfunc): Do not attempt
conversions to base classes of incomplete types.
PR c++/21614
* g++.dg/expr/ptrmem6.C: New test.
* g++.dg/expr/ptrmem6a.C: Likewise.
From-SVN: r100291
* cp-tree.def (UNARY_PLUS_EXPR): New C++ unary tree code.
* parser.c (cp_parser_unary_expression): Use UNARY_PLUS_EXPR instead
of CONVERT_EXPR.
(cp_parser_unary_expression): Likewise.
* typeck.c (build_unary_op): Likewise.
* call.c (add_builtin_candidate, build_new_op): Likewise.
* error.c (dump_expr): Likewise.
* pt.c (tsubst_copy, tsubst_copy_and_build): Likewise.
* decl.c (ambi_op_p, grok_op_properties): Likewise.
* dump.c (dump_op): Likewise.
* lex.c (init_operators): Likewise.
* operators.def ("+"): Likewise.
* cp-gimplify.c (cp_gimplify_expr): Handle UNARY_PLUS_EXPR like a
conversion, if the result and argument types differ.
* tree.c (fold_if_not_in_template): Fold UNARY_PLUS_EXPR much
like a NOP_EXPR when !processing_template_decl.
* cxx-pretty-print.c (pp_cxx_cast_expression): Prototype.
(pp_cxx_unary_expression): Handle new UNARY_PLUS_EXPR tree code.
Co-Authored-By: Giovanni Bajo <giovannibajo@gcc.gnu.org>
From-SVN: r100285
* reg-stack.c (compensate_edge): Remove original prototype.
(propagate_stack): New function to copy the stack layout
at the start of a basic block from the layout at the end of
one of its predecessors.
(compensate_edge): Assume that both source and destination
blocks have already had their stack layouts defined.
(compensate_edges): Traverse all non-entry edges in the CFG
and call compensate_edge on each in turn.
(convert_regs_1): Change return type to void. Call
propagate_stack instead of compensate_edge.
(convert_regs_2): Change return type to void. Update call
to convert_regs_1 to ignore the (now void) return value.
(convert_regs): Update calls to convert_regs_2 to ignore
the (now void) return value. After all the basic blocks have
been processed, call compensate_edges to actually emit new
insns.
(reg_to_stack): Initialize the aux info for each basic block
with FOR_EACH_BB instead of which FOR_EACH_BB_REVERSE.
From-SVN: r100283
* domwalk.c (walk_dominator_tree, init_walk_dominator_tree,
fini_walk_dominator_tree): Use VEC instead of VARRAY.
* domwalk.h (dom_walk_data): Change the type of
block_data_stack and free_block_data to VEC(void_p,heap)*.
* tree-ssa-dse.c (dse_initialize_block_local_data,
dse_optimize_stmt, dse_record_phis, dse_finalize_block): Use
VEC instead of VARRAY.
From-SVN: r100281
2005-05-27 Paolo Carlini <pcarlini@suse.de>
* docs/html/abi.html: Mention 3.4.0 as the current baseline; add
a notice about the configure options.
From-SVN: r100277
* cgraph.c: Include tree-gimple.h
(cgraph_edge): Rename expr to stmt.
(cgraph_create_edge): Likewise.
(cgraph_clone_node): Likewise.
* cgraph.h (cgraph_node): Use call_stmt instead of call_expr.
* cgraphunit.c (record_call_1): Rename to ...
(record_reference): ... this one; do not build edges.
(cgraph_varpool_analyze_pending_decls): Call record_reference directly.
(current_basic_block): Kill.
(cgraph_create_edges): Rewrite to work on gimple statements nicely.
(verify_cgraph_node): Likewise.
* tree-inline.c (copy_body_r): Do not mess up with cgraph edges.
(copy_bb): Mess up with cgraph edges here; simplify EH handling.
(copy_edges_for_bb): Simplify EH handling.
(expand_call_inline): Pass statement to cgraph_edge and
cgraph_create_edge.
From-SVN: r100276