* directives.c (cpp_handle_deferred_pragma): Save, clear and restore
cb.line_change. Otherwise do_pragma will call the line_change
call-back with a meaningless line number.
From-SVN: r88320
* tree-flow.h (struct bb_ann_d): Remove num_preds member.
* tree-into-ssa.c (rewrite_into_ssa): Don't set it.
(rewrite_ssa_into_ssa): Likewise.
* tree-phinodes.c (create_phi_node): Access the number of
predecessor edges using EDGE_COUNT() and not num_preds.
Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
Co-Authored-By: Steven Bosscher <stevenb@suse.de>
From-SVN: r88308
2004-09-29 Paolo Carlini <pcarlini@suse.de>
* include/std/std_sstream.h (basic_stringbuf(ios_base::openmode)):
Don't use _M_stringbuf_init, keep the pointers null, per 27.7.1.1.
(str()): Slightly tweak, protect from pptr() == 0.
(_M_update_egptr()): Likewise.
* include/bits/sstream.tcc (ssekoff, seekpos): In order to check
for an empty buffer use __beg instead of _M_string.capacity().
* testsuite/27_io/basic_stringbuf/cons/char/1.cc: New.
* testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_filebuf/cons/char/1.cc: New.
* testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc: Likewise.
* testsuite/27_io/basic_streambuf/cons/char/1.cc: Update.
* testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc: Likewise.
2004-09-29 Paolo Carlini <pcarlini@suse.de>
Benjamin Kosnik <bkoz@redhat.com>
* testsuite/testsuite_io.h (class constraint_buf): New, extended
and templatized version of constraint_filebuf; add typedefs for
streambuf/stringbuf/filebuf and wchar_t counterparts.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r88307
* Makefile.in: Rebuilt.
* Makefile.am (ordinary_java_source_files): Re-sorted.
(libgcj.la): Moved to old location near lib-gnu-awt-xlib.la.
From-SVN: r88294
2004-09-29 Andrew Haley <aph@redhat.com>
PR java/17007
* parse.y (patch_binop): Don't mess with the TREE_SIDE_EFFECTS of the
result of TRUNC_MOD_EXPR.
(patch_unaryop): Likewise for CONVERT_EXPR, which may throw.
* decl.c (java_init_decl_processing): Mark
soft_lookupinterfacemethod_node and soft_instanceof_node pure.
From-SVN: r88289
* tree.h (enum tree_index): Add TI_VA_LIST_GPR_COUNTER_FIELD
and TI_VA_LIST_FPR_COUNTER_FIELD.
(va_list_gpr_counter_field, va_list_fpr_counter_field): Define.
* tree-pass.h (pass_stdarg): Add.
* tree-optimize.c (init_tree_optimization_passes): Add pass_stdarg.
* tree-stdarg.c: New file.
* Makefile.in (OBJS-common): Add tree-stdarg.o.
(tree-stdarg.o): Add dependencies.
* function.h (struct function): Add va_list_gpr_size and
va_list_fpr_size fields.
* function.c (allocate_struct_function): Initialize them.
* config/i386/i386.c (ix86_build_builtin_va_list): Initialize
va_list_{g,f}pr_counter_field.
(ix86_setup_incoming_varargs): Don't do anything if reg_save
area will not be used. Only save registers that tree-stdarg.c
detected they need saving.
(ix86_va_start): Don't set up fields that won't be used.
* config/rs6000/rs6000.c (rs6000_build_builtin_va_list): Initialize
va_list_{g,f}pr_counter_field.
(setup_incoming_varargs): Don't do anything if reg_save
area will not be used. Only save registers that tree-stdarg.c
detected they need saving.
(rs6000_va_start): Don't set up fields that won't be used.
* gcc.c-torture/execute/stdarg-1.c: New test.
* gcc.c-torture/execute/stdarg-2.c: New test.
* gcc.c-torture/execute/stdarg-3.c: New test.
* gcc.dg/tree-ssa/stdarg-1.c: New test.
* gcc.dg/tree-ssa/stdarg-2.c: New test.
* gcc.dg/tree-ssa/stdarg-3.c: New test.
* gcc.dg/tree-ssa/stdarg-4.c: New test.
* gcc.dg/tree-ssa/stdarg-5.c: New test.
From-SVN: r88279
* tree-ssa-threadupdate.c (create_block_for_threading): Request
that no outgoing edges be left in the duplicate block. Do no
update information on outgoing edges or PHI nodes in target
blocks here.
(remove_ctrl_stmt_and_useless_edges): Renamed from
remove_last_stmt_and_useless_edges. Handle case where the
block is empty or has no control statements. Do not update edge
flags here.
(thread_block): Create a template block rather than copying the
original block every time. Create outgoing edges from the
duplicate blocks and update PHIs at the target of the outgoing
edges here. Fix edge flags for the original block if necessary.
* cfghooks (duplicate_block): No longer assert that the original
block has incoming edges.
From-SVN: r88267
* doc/extend.texi (Extended Asm): Add blurb about using Explicit
Reg Vars to enforce register allocation with general constraints.
(Explicit Reg Vars): Clarify relation to asm statements.
(Local Reg Vars): Similar.
From-SVN: r88265
* sched-rgn.c (haifa_edge, edge_table, NEXT_IN, NEXT_OUT, FROM_BLOCK,
TO_BLOCK, nr_edges, in_edges, out_edges, IN_EDGES, OUT_EDGES,
build_control_flow, new_edge): Remove.
(schedule_insns): Remove edge_table/in_edges/out_edges cleanup.
(bitlst, bitlst_table_last, bitlst_table): Remove.
(bblst): Store basic_block pointer instead of block index.
(bblst_table): Likewise.
(edgelst): Store edge pointer instead of edge index.
(edgelst_table, edgelst_last): New variables.
(extract_bitlst): Rename to ...
(extract_edgelst): ... this. Return edge pointers, not indices.
(split_edges): Update call.
(rgn_edges): Store edge pointers instead of indices.
(edge_to_bit): Remove.
(EDGE_TO_BIT): Store per-region edge index in edge->aux.
(SET_EDGE_TO_BIT): New macro.
(is_cfg_nonregular): Check for simple cases of unreachable blocks.
(find_rgns): Remove edge_list parameter. Traverse standard CFG
data structures instead of haifa_edge et al. Use edge pointers
instead of edge indices everywhere.
(compute_dom_prob_ps): Use standard CFG data structures. Account
for exit edges.
(compute_trg_info): Likewise.
(propagate_deps): Likewise.
(debug_candidate): Account for bblst data structure change.
(check_live_1, update_live_1, is_pfree): Likewise.
(IS_REACHABLE): Use standard CFG data structures.
(init_ready_list): Update bblst_table/edgelst_table allocation.
(schedule_region): Update alloc/cleanup code to data structure
changes. Use edge->aux to store per-region edge index.
(init_regions): No longer call build_control_flow. Do not
create edge list any more.
From-SVN: r88264
PR 17531
* expr.c (expand_expr_addr_expr_1): Only assemble_external for decls.
Don't check VOIDmode here. Force PLUS operands to common type.
(expand_expr_addr_expr): Do VOIDmode check earlier. Force use of
Pmode if given a non pointer type.
PR 17531
* optabs.c (expand_binop): Force constants to the correct mode.
From-SVN: r88257
PR driver/17537
* g++spec.c (lang_specific_driver): Unrecognized libraries, other
than -lc and -lm, may require linking against libstc++.
From-SVN: r88256
* config/s390/s390.c (s390_adjust_cost): Remove.
(TARGET_SCHED_ADJUST_COST): Do not redefine.
(s390_adjust_priority): Handle TYPE_STM like TYPE_STORE.
* config/s390/s390.md ("main_pool"): Use "larl" type
attribute if TARGET_CPU_ZARCH.
From-SVN: r88254
* Makefile.in (tree-ssa-propagate.o): Depend on vec.h.
* tree-ssa-propagate.c: Include vec.h.
(interesting_ssa_edges, varying_ssa_edges): Make these VECs
instead of varrays.
(cfg_blocks_add): Assert the block is not already in the worklist.
Update uses of interesting_ssa_edges and varying_ssa_edges.
(process_ssa_edge_worklist, ssa_prop_init, ssa_prop_fini,
ssa_propagate): Likewise.
From-SVN: r88249
sh.h (INIT_CUMULATIVE_ARGS): Replace with an invocation of the function
sh_init_cumulative_args.
(INIT_CUMULATIVE_LIBCALL_ARGS): Likewise.
(INIT_CUMULATIVE_INCOMING_ARGS): Delete.
sh-protos.h: Prototype sh_init_cumulative_args.
sh.c (sh_init_cumulative_args): New function based on the contents of the old
INIT_CUMULATIVE_ARGS macro but with a heuristic added to determine the setting
of force_mem when a library function is being called.
From-SVN: r88238
2004-09-28 Andrew Haley <aph@redhat.com>
PR java/17586
* jcf-parse.c (load_class): Don't try to read a class that we've
already read.
Check that we really did read the right class.
From-SVN: r88233
* tree-ssa-alias.c (create_name_tags): If PTR points to a
volatile type, mark the tag volatile.
(get_tmt_for): If TAG_TYPE is a volatile type, mark the tag
volatile.
From-SVN: r88232