blob: dc7282b839c9e6ae059fd3f110ab68a090d3a7e7 [file] [log] [blame]
2002-06-30 Devang Patel <>
* objc/objc-act.c (finish_file): Avoid finish_objc() if
Fri Jun 28 17:22:37 2002 Denis Chertykov <>
Frank Ch. Eigler <>
Matthew Green <>
Richard Henderson <>
Dave Hudson <>
Jeff Johnston <>
Alan Lehotsky <>
Bernd Schmidt <>
Graham Stott <>
* doc/extend.texi: Add ip2k port to description of attribute
* doc/install.texi (Specific): Add ip2k description.
* doc/install-old.texi (Configurations): Add ip2k to possible
cpu types.
* doc/md.texi: Document ip2k constraints.
* config/ip2k/crt0.S: New file.
* config/ip2k/ip2k-protos.h: New file.
* config/ip2k/ip2k.c: New file.
* config/ip2k/ip2k.h: New file.
* config/ip2k/ New file.
* config/ip2k/libgcc.S: New file.
* config/ip2k/t-ip2k: New file.
2002-06-30 Hans-Peter Nilsson <>
* config/mmix/ ("return"): New pattern.
* config/mmix/mmix.h (TARGET_MASK_USE_RETURN_INSN)
(TARGET_SWITCHES): Add -msingle-exit and -mno-single-exit.
* config/mmix/mmix.c (MMIX_OUTPUT_REGNO): Fix spacing.
(mmix_target_asm_function_prologue): When no epilogue is executed,
just emit a blank line. Use MMIX_POP_ARGUMENT with final POP insn.
(mmix_print_operand) <case '.'>: New case.
(mmix_print_operand_punct_valid_p): Match '.'.
(mmix_use_simple_return): New function.
* config/mmix/mmix-protos.h (mmix_use_simple_return): Prototype.
* doc/invoke.texi (Option Summary) <MMIX Summary>: Add
-msingle-exit, -mno-single-exit.
(MMIX Options): Ditto.
2002-06-30 Aldy Hernandez <>
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Fix typos.
2002-06-30 Kaveh R. Ghazi <>
* gengtype.c (oprintf): Move VA_CLOSE after all fixedarg uses.
2002-06-30 Alan Modra <>
* unroll.c (loop_iterations): Handle EQ loops.
2002-06-29 David Edelsohn <>
* config/rs6000/ (ctrdi): Allocate pseudo for FPR
constraint in define_expand, not splitter.
2002-06-29 Aldy Hernandez <>
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Use
build_function_type_list instead of build_function_type.
* config/ia64/ia64.c (ia64_init_builtins): Same.
* config/alpha/alpha.c (alpha_init_builtins): Same.
* config/rs6000/rs6000.c (altivec_init_builtins): Same.
* config/arm/arm.c (arm_init_builtins): Same.
* tree.h: Add build_function_type_list prototype.
* tree.c (build_function_type_list): New.
2002-06-29 Kaveh R. Ghazi <>
* collect2.c (scan_prog_file): Fix typo in message.
2002-06-28 Aaron Lehmann <>
* fold-cont.c: Remove unused CHARMASK.
2002-06-29 Neil Booth <>
PR preprocessor/7150
* cppmain.c (scan_translation_unit_trad): Simplify.
* cppmacro.c (cpp_scan_nooutput): Handle traditional case.
2002-06-29 Neil Booth <>
* config/i386/crtdll.h: Define EXTRA_OS_CPP_BUILTINS.
* config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): New.
* config/i386/djgpp.h, config/i386/i386-coff.h,
config/i386/i386-interix.h, config/i386/i386-interix3.h,
config/i386/lynx-ng.h, config/i386/lynx.h, config/i386/mingw32.h,
config/i386/openbsd.h, config/i386/ptx4-i.h, config/i386/sysv3.h,
config/i386/uwin.h: Similarly.
2002-06-29 Herman A.J. ten Brugge <>
* c4x.h: (TARGET_CPU_CPP_BUILTINS): Check flag_inline_functions and
flag_inline_trees to enable inlining.
2002-06-28 Phil Edwards <>
* (gcc_gxx_include_dir): Change to match versioned
C++ headers if --enable-version-specific-runtime-libs is used.
* configure: Regenerate.
2002-06-28 Jan Hubicka <>
* gcse.c (gcse_emit_move_after): Use gen_move_insn to produce the move.
2002-06-28 Stephen Clarke <>
* combine.c (combine_simplify_rtx): Pass the mode of the
shift count, not the shift operation when trying to simplify
a shift on a SHIFT_COUNT_TRUNCATED target.
2002-06-28 Stephane Carrez <>
* config/m68hc11/ ("*addsi3"): Use 'o' constraint to
avoid the auto increment addressing modes.
("*subsi3"): Likewise.
(split for add/sub on address): For 68HC12 push the value on
the stack and do the operation with a pop.
2002-06-28 Neil Booth <>
* cpplib.c (_cpp_handle_directive): Move #define-specific
code to the #define handler...
(lex_macro_node): No longer a need to check for comments here.
2002-06-28 Stephane Carrez <>
* config/m68hc11/m68hc11.h (OPTIMIZATION_OPTIONS): Define.
* config/m68hc11/m68hc11-protos.h (m68hc11_optimization_options):
* config/m68hc11/m68hc11.c (m68hc11_optimization_options): New,
do not reorder basic blocks at the end when optimizing for size.
2002-06-28 Stephane Carrez <>
* config/m68hc11/m68hc11.c (autoinc_mode): New function.
(m68hc11_make_autoinc_notes): New function.
(m68hc11_split_move): Be very cautious when spliting a move with
auto increment/decrement modes because this may result in incompatible
directions; add REG_INC notes to the resulting insn for CSE reg.
2002-06-28 Stephane Carrez <>
* config/m68hc11/m68hc11.c (register_indirect_p): For 68HC12 a constant
can be a valid address.
2002-06-28 Aldy Hernandez <>
* config/rs6000/rs6000.c: Remove unusued variables from last
2002-06-27 Aldy Hernandez <>
* config/rs6000/rs6000.c (rs6000_override_options): Move
*SUBTARGET_OVERRIDE_OPTIONS before the -m options.
2002-06-27 Aldy Hernandez <>
* config/rs6000/rs6000.c (altivec_expand_builtin): Move
lvx/stv/dst builtins...
(altivec_expand_ld_builtin): here.
(altivec_expand_dst_builtin): ...and here (respectively).
2002-06-28 Bob Wilson <>
* config/xtensa/xtensa.h (RETURN_IN_MEMORY): Update comment.
2001-06-08 Bernd Schmidt <>
* emit-rtl.c (gen_lowpart_common): Don't create paradoxical FLOAT_MODE
* recog.c (general_operand, register_operand): Disallow them.
2002-06-28 Neil Booth <>
PR preprocessor/7138
* cpplib.c (_cpp_handle_directive): Do traditional
preparation after setting state.angled_headers.
* cpptrad.c (scan_out_logical_line): Fix potential
quote bug.
2002-06-27 Aldy Hernandez <>
* config/rs6000/rs6000.c (rs6000_override_options): Move
*SUBTARGET_OVERRIDE_OPTIONS before the -m options.
2002-06-27 Bob Wilson <>
* config/xtensa/ Give "*xxx" names to all unnamed insn's.
(*lsiu, *ssiu, movstrsi_internal, zero_cost_loop_start,
zero_cost_loop_end): Remove unnecessary "parallel" from insns.
2002-06-27 Roger Sayle <>
* config/d30v/d30v.h: Remove commented out STACK_REGS #defines.
* config/stormy16/stormy16.h: Likewise.
* config/stormy16/stormy16.h (CUMULATIVE_ARGS): Replace typedef
with #define.
2002-06-26 Gerald Pfeifer <>
* doc/install.texi (Binaries): Add Sinix/Reliant Unix. Move
Hitachi entry. Make punctuation more consistent.
2002-06-27 Matt Kraai <>
* doc/install.texi: Change ` bit' to `-bit'.
* doc/md.texi: Change `-bits' to `-bit'.
* doc/tm.texi: Change `-bits' to ` bits'.
2002-06-27 Daniel Berlin <>
* gcse.c (hoist_code): Rewrite to only get list of dominated
blocks once per BB. Also fix reversed test (by removing need for
the test at all).
2002-06-27 Neil Booth <>
* cpphash.h (_cpp_set_trad_context): Remove.
* cpplib.c (prepare_directive_trad): Do nothing for #define.
(cpp_push_buffer, _cpp_pop_buffer): Don't call _cpp_set_trad_context.
* cpptrad.c: Update comments.
(_cpp_read_logical_line_trad): Let scan_logical_line handle
updating the current context.
(scan_logical_line): Update the current context.
(_cpp_create_trad_definition): Similarly.
(_cpp_set_trad_context): Remove.
2002-06-27 Neil Booth <>
PR preprocessor/7070
* c-lex.c (cb_def_pragma): Don't try to spell CPP_EOF.
2002-06-26 Bob Wilson <>
* config/xtensa/xtensa-protos.h (xtensa_return_addr): Declare.
config/xtensa/xtensa.c (xtensa_return_addr): New function.
config/xtensa/xtensa.h (RETURN_ADDR_RTX): Use xtensa_return_addr.
config/xtensa/ (fix_return_addr): New pattern.
2002-06-26 Kaveh R. Ghazi <>
* mips.c (coprocessor_operand, coprocessor2_operand,
symbolic_operand): Move prototypes from here...
* mips-protos.h (coprocessor_operand, coprocessor2_operand,
symbolic_operand): here.
Wed Jun 26 16:32:57 2002 J"orn Rennecke <>
* config/sh/crt1.asm: remove _stack label definition
and sentinel value.
2002-06-26 Kaveh R. Ghazi <>
* varasm.c: Include real.h before output.h.
2002-06-26 Aldy Hernandez <>
* config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Revert change to
2002-06-26 Nathanael Nerode <>
* config.gcc (vax-*-vms*): Make obselete.
2002-06-25 Kaveh R. Ghazi <>
* gcc.c (warn_std): Delete.
2002-06-25 Loren J. Rittle <>
* doc/extend.texi: Fix formatting of last checkin.
2002-06-25 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/alpha/alpha.h (TARGET_CPU_CPP_BUILTINS): Remove leading
underscore from __IEEE_FP and __IEEE_FP_INEXACT.
2002-06-25 Aldy Hernandez <>
* doc/extend.texi (PowerPC AltiVec Built-in Functions): Document
discrepancies from motorola's documentation.
Tue Jun 25 21:51:13 2002 J"orn Rennecke <>
* optabs.c (expand_vector_binop, expand_vector_unop): Don't assume
* config/sh/lib1funcs.asm (udivdi3): Make first divide step
produce a 32 bit result before normalization, then normalize with a
left shift. Compute approximative error of 2nd reciprocal
approximation in 2's complement. Fix mask generation from upper
longword of second divide stage result.
For large divisor, fix shift count used to truncate first stage
divide result; make decision if to adjust upwards based on comparison
of higher parts of normalized values.
(udivdi): Likewise. Undo normalization of result for large divisor
2002-06-25 David S. Miller <>
* config/sparc/ Change \\{t,n} to \{t,n}.
2002-06-25 Neil Booth <>
* cpplib.c (do_include_common): Revert to correct line number
if -traditional.
* cpptrad.c (scan_out_logical_line): Treat null directive as
white space. Invlidate MI optimization for non-whitespace
text outside a directive.
2002-06-24 Kaveh R. Ghazi <>
* (SHELL): Set to @SHELL@.
* fixinc/ (SHELL): Likewise.
* (fixuns_truncdfsi2, fixuns_truncdfdi2,
fixuns_truncsfsi2, fixuns_truncsfdi2): Avoid automatic aggregate
2002-06-24 Jeff Law <>
* flow.c (propagate_one_insn): When removing an insn
with a REG_LIBCALL note but not the entire libcall sequence,
delete the associated REG_RETVAL note.
Mon Jun 24 21:05:09 2002 J"orn Rennecke <>
* lib1funcs.asm (sdivsi3): Add optimized SH64 implementations.
(udivsi3): Likewise. Rewrite SH1 implementation.
(udivdi3, divdi3, umoddi3, moddi3): New SHmedia functions.
* (R20_REG, R21_REG, R22_REG, R23_REG, FR23_REG): New constants.
(udivsi3_i1_media, divsi3_i1_media): Fix clobber list.
* config/sh/t-sh64 (LIB1ASMFUNCS): (_udivdi3, _divdi3, _umoddi3): Add.
(_moddi3): Likewise.
* lib1funcs.asm (ic_invalidate): Add data cache line writeback.
arguments into account for stack_regs.
2002-06-24 Matt Kraai <>
* doc/extend.texi: Change `@dots{}' to `/* @r{@dots{}} */'
in examples.
2002-06-24 Art Haas <>
* doc/extend.texi (Other Builtins): Change `...' to `@dots{}'.
* doc/tm.texi (Frame Layout): Likewise.
2002-06-20 Steve Ellcey <>
* gcc/config.gcc (ia64*-*-hpux*): Set use_collect2 to no.
Set float_format to i128.
2002-06-24 David S. Miller <>
* config/sparc/sparc.c (INIT_TARGET_OPTABS): If ARCH64, set the
32-bit ABI libfuncs to NULL.
* config/sparc/ Use define_insn_and_split. Use braced
strings instead of quoted strings for code blocks.
* expmed.c (expand_divmod): Do not set optab1/optab2 to the shift
optabs if op1 is const0_rtx.
* (GTFILES): Add basic-block.h
* basic-block.h (label_value_list, tail_recursion_label_list):
Mark with GTY.
2002-06-24 Neil Booth <>
* cpptrad.c (scan_out_logical_line): Check recursing only when
we know we have a macro invocation in the function-like case.
Only call _cpp_handle_directive if we know we have a good
directive, or we want to reject a bad directive.
2002-06-24 Alan Modra <>
* doloop.c (doloop_valid_p): Correct comment.
(doloop_modify_runtime <abs_inc != 1>): Simplify.
(doloop_modify_runtime <do-while>): Don't emit code when NE.
Thu Jun 20 00:26:53 2002 Denis Chertykov <>
* config.gcc: Add support for ip2k.
2002-06-23 Jan Hubicka <>
Jeff Law <>
* function.h (struct emit_status): Clarify potential contents
of regno_reg_rtx array.
* integrate.c (copy_rtx_and_substitute): Update comments. Make
sure entry in regno_reg_rtx is a REG before checking REG_POINTER.
* reg-stack.c (convert_regs_exit): Push the registers to stack in
proper order.
2002-06-22 Ulrich Weigand <>
PR middle-end/6963
* function.c (assign_stack_temp_for_type): Do not return
the same MEM rtx for multiple uses of a stack slot.
2002-06-22 David S. Miller <>
PR target/6841 target/6770 target/6719
* config/sparc/sparc.h (PREFERRED_RELOAD_CLASS): Return
NO_REGS for constant X when CLASS is GENERAL_OR_FP_REGS or
2002-06-22 Neil Booth <>
* cpptrad.c (struct fun_macro): Add line number.
(scan_out_logical_line): Set it, and use it to report unterminated
macro invocations.
2002-06-21 Kaveh R. Ghazi <>
* genautomata.c (copy_node, VLA_PTR_CREATE, VLA_PTR_EXPAND,
REGEXP_ONEOF, check_name): Const-ify.
2002-06-21 Matt Thomas <>
* config/vax/vax.c (vax_output_function_prologue): Use
REGISTER_PREFIX. Fix some indentation.
* config/vax/vax.h (FUNCTION_PROFILER): Use reg_names[].
i-stream sync to the end.
(REGISTER_PREFIX): Define as "".
2002-06-21 Jason Thorpe <>
* config.gcc (ns32k-*-netbsd*): Remove from list of obsolete
2002-06-21 Kaveh R. Ghazi <>
* tree.c (tree_node_kind, tree_node_counts, tree_node_sizes,
tree_node_kind_names): Wrap in GATHER_STATISTICS macro.
2002-06-21 Matt Thomas <>
* config/vax/netbsd.h: Adjust a comment.
(TARGET_DEFAULT): Redefine as 0.
2002-06-21 Richard Henderson <>
* bb-reorder.c (make_reorder_chain_1): Search harder for the
vax casesi fallthru edge.
* cfglayout.c (cleanup_unconditional_jumps): Use
redirect_edge_succ_nodup. Do not delete ADDR_VEC insns as dead.
* cfgrtl.c (force_nonfallthru_and_redirect): Place redirection
block after ADDR_VEC.
2002-06-21 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/sparc/t-linux64 (EXTRA_MULTILIB_PARTS): Add crtfastmath.o.
2002-06-21 Neil Booth <>
* cpperror.c (cpp_error): For traditional CPP, default to
diagnostics on pfile->line.
* cpplib.c (prepare_directive_trad): Set line number for
diagnostics for #define too.
* cpptrad.c (skip_whitespace): Skip comments properly.
(_cpp_expansions_different_trad): Initialize quote2.
2002-06-21 Hans-Peter Nilsson <>
* config/mmix/ Change GNU CC to GCC in file header comment.
* config/mmix/mmix.h: Ditto.
* config/mmix/mmix-protos.h: Ditto.
* config/mmix/mmix.c: Ditto. Fix typo in comment.
* config/mmix/mmix-modes.def: Change GNU CC to GCC in file header
comment. Comment extra CC modes.
2002-06-20 Jan Hubicka <>
* cfglayout.c (scope_to_insns_initialize): Call set_block_levels.
(scope_to_insns_finalize): Do not call set_block_levels; handle
(choose_inner_scope): New.
* rtl.h (choose_inner_scope): Declare.
2002-06-20 John David Anglin <>
* pa-protos.h (pa_asm_output_mi_thunk): Change third argument to
* pa.c (pa_asm_output_mi_thunk): Likewise.
(n_deferred_plabels): Change type to size_t.
(output_deferred_plabels, output_call): Use size_t instead of int.
2002-06-20 Richard Henderson <>
PR target/4041
* config/m68k/ (zero_extendsidi2): Create expander; duplicate
pattern and adjust constraints for coldfire.
2002-06-20 Richard Henderson <>
* explow.c (probe_stack_range): Use gen_rtx_fmt_ee.
2002-06-20 Chris Demetriou <>
* config.gcc (mipsisa64-*-elf*, mipsisa64el-*-elf*): New targets.
2002-06-20 Chris Demetriou <>
* config/mips/mips.h (ISA_HAS_FP4): Fix comment to reflect use.
2002-06-20 Stan Shebs <>
* dominance.c: Include errors.h instead of error.h.
2002-06-20 Neil Booth <>
* cppexp.c (cpp_interpret_integer): Don't force traditional
numbers to be unsigned.
* cpplib.c (prepare_directive_trad): Set line number for
* cpptrad.c (scan_out_logical_line): Continue scanning out
at start of buffer.
* gcc.c (trad_capable_cpp): Use cc1 always.
2002-06-20 Jeffrey Law <>
* i386.h (TARGET_DEFAULT): Do not turn on frame pointer
elimination in leaf functions by default yet.
2002-06-20 Richard Sandiford <>
* combine.c (make_extraction): Reapply to the argument of an ASHIFT.
2002-06-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/sparc/t-crtfm (crtfastmath.o): Prefix with $(T) for
* config/sparc/t-sol2-64 (EXTRA_MULTILIB_PARTS): Add crtfastmath.o.
Fixes PR other/6836.
Thu Jun 20 19:42:21 CEST 2002 Jan Hubicka <>
Pavel Nejedly <>
Mon Jun 10 20:42:34 CEST 2002 Jan Hubicka <>
* basic-block.h: Do not include et-forest.h
(dominance_info): Declare as struct dominance-info.
* cfglayout.c (cleanup_unconditional_jumps): Remove the edge before
deleting block.
* dominance.c (struct dominance_info): Define.
(BB_NODE, SET_BB_NODE): New macros.
(bb_hash_func, bb_eq_func): Kill.
(calculate_dominace_info, free_dominacne_info, set_immediate_dominator,
nearest_common_dominator, dominated_by_p, recount_dominator,
add_to_dominance_info, delete_from_dominance_info): update for new
(get_dominated_by, redirect_immediate_dominators): Rewrite using
* ifcvt.c (process_double_test_block, merge_if_block, find_cond_trap,
find_if_case_1, find_if_case_2): Remove killed blocks from dominance
* et-forest.h: Update copyright; revamp all function to operate on
(et_forest_value): Kill.
(et_forest_enumerate_sons, et_forest_node_value): New.
* et-forest.c: Update copyright.
* et-forest.h: Update copyright; revamp all function to operate on
(et_forest_value): Kill.
(et_forest_enumerate_sons, et_forest_node_value): New.
Thu Jun 6 22:43:43 CEST 2002 Jan Hubicka <>
* basic-block.h: Inlude et-forest.h
(basic_block_def): Kill dominator.
(dominance_info): New type.
(loops): Use dominace_info.
(dominace handling functions): Take dominace_info as argument
instead of bitmaps.
(create_preheader): Likewise.
* cfg.c (entry_exit_blocks): Kill dominator.
(dump_flow_info): Do not dump dominators.
* cfglayout.c (cleanup_unconditonal_jumps): Delete deleted block from
* cfgloop.c (flow_pre_header_find): Use dominacne_info.
(flow_loops_pre_header_scan, make_forwarder_block,
canonicale_loop_headers, flow_loops_find): Likewise.
* dominance.c: Include error.h
(idoms_to_doms): Kill.
(bb_hash_func, bb_eq_func): New static functions.
(debug_dominace_info): New global function.
(calculate_dominance_info): Use new et forest structure.
(free_dominace_info, get_immediate_dominator, set_immediate_dominator,
get_dominated_by, redirect_immediate_dominators,
nearest_common_dominator, dominated_by_p, verify_dominators,
recount_dominator, iterate_fix_dominators, add_to_dominace_info,
delete_from_dominance_info): New global functions.
* gcse.c (domnators): CHange to dominance_info.
(alloc_hoist_mem): Do not alloc dominators
(free_code_hoist_mem): Use free_dominance_info.
(compute_code_hoist_data): Use dominance_info.
(hoist_code): Likewise.
* ifcvt.c (post_dominators): Likewise.
(find_if_case_2, if_convert): Likewise.
* predict.c (process_note_predictions, process_note_prediction,
estimate-probability): Likewise.
* sched-rgn.c (find_rgns, init_regions): Likewise.
* ssa-dce.c (find_all_control_dependences, fint_control_depemndence,
find_pdom, delete_insn_bb, ssa_eliminate_dead_code): Likewise.
* ssa.c (compute_dominance_frontiers_1, rename_block, rename_registers,
find_evaluations, convert_to_ssa): Likewise.
* ssa.h (compute_dominance_frontiers): Likewise.
Thu Jun 6 22:57:34 CEST 2002 Pavel Nejedly <>
* (et-forest.c): Add.
* et-forest.c: New file.
* at-forest.h: New file.
2002-06-20 Kaveh R. Ghazi <>
* c-decl.c (c_decode_option): Use ARRAY_SIZE in lieu of explicit
array size calculation.
* gengtype.c (NUM_BASE_FILES, create_file, write_gc_root):
* diagnostic.c (diagnostic_kind_text): Const-ify.
* gengtype.c (lang_names): Likewise.
Thu Jun 20 17:25:29 CEST 2002 JAn HUbicka <>
* combine.c (subst): Be prepared for simplify_subreg to return VOIDmode.
2002-06-20 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/sol2.h: New file.
* config.gcc (i?86-*-solaris2*): Include it before i386/sol2.h.
(sparc64-wrs-vxworks*): Include it before sparc/sol2.h.
(sparc-*-chorusos*): Likewise.
(sparc-*-elf*): Likewise.
(sparc-*-rtems*, sparc-*-rtemself*): Likewise.
(sparc64-*-solaris2*, sparcv9-*-solaris2*): Likewise.
(sparc-hal-solaris2*): Likewise.
(sparc-*-solaris2*): Likewise.
(sparclite-*-elf*): Likewise.
(sparc86x-*-elf*): Likewise.
(sparc64-*-elf*): Likewise.
* config/i386/sol2.h (PREFERRED_DEBUGGING_TYPE): Moved to
(ASM_SPEC): Override config/sol2.h version for now.
Removed obsolete GAS_REJECTS_MINUS_S variant.
(WINT_TYPE, WINT_TYPE_SIZE): Moved to config/sol2.h.
Assert system=unix.
(CPP_SPEC): Simplified using new CPP_SUBTARGET_SPEC.
(ASM_CPU_SPEC): Define.
* config/sparc/sol2-bi.h (LONG_DOUBLE_TYPE_SIZE): Removed, already
in config/sparc/sol2.h.
(ASM_SPEC): Moved to config/sol2.h.
(CPP_CPU_SPEC): Simplified.
(STARTFILE_SPEC32): Likewise, renamed to STARTFILE_ARCH32_SPEC for
(STARTFILE_SPEC): Moved to config/sol2.h
(SUBTARGET_EXTRA_SPECS): Add startfile_arch.
(LINK_ARCH32_SPEC): Moved to config/sol2.h.
(LINK_ARCH64_SPEC): Simplified.
(LINK_ARCH_SPEC): Redefined config/sol2.h version for 64-bit support.
(LINK_SPEC): Moved to config/sol2.h
* config/sparc/sol2.h (WCHAR_TYPE, WCHAR_TYPE_SIZE): Moved to
Use BITS_PER_WORD for size.
(CPP_PREDEFINES): Removed OS-specific part handled by
(CPP_SUBTARGET_SPEC): Moved to config/sol2.h.
(ASM_SPEC): Moved to config/sol2.h.
(TARGET_DEFAULT): Reordered to match config/sparc/sol2-bi.h version.
(TRANSFER_FROM_TRAMPOLINE): Moved to config/sol2.h
* config.gcc (i?86-*-solaris2*): Removed obsolete gas support.
* config/i386/sol2gas.h: Removed.
Thu Jun 20 12:14:01 CEST 2002 Jan Hubicka <>
* (xorqi_1_slp, xorqi_2_slp): New patterns.
2002-06-16 Aldy Hernandez <>
* gcc.c-torture/execute/simd-1.c: New.
* gcc.dg/simd-1.c: New.
* doc/extend.texi (Vector Extensions): Document that we can
specify simd types not specifically supported by the hardware.
Document that simd types can be used as function arguments.
Document that signness does make a difference in SIMD types.
Misc cleanups and revisions to the vector extensions section.
* simplify-rtx.c (simplify_subreg): Simplify subregs of vector
* expr.c (vector_mode_valid_p): New.
* expr.h: Add vector_mode_valid_p.
* defaults.h (VECTOR_MODE_SUPPORTED_P): Set default.
* c-common.c (type_for_mode): Always build vector nodes regardless
(handle_mode_attribute): Error if we can't emulate a nonexisting
vector mode.
(handle_vector_size_attribute): Same.
* optabs.c (expand_binop): Open-code vector operations.
(expand_unop): Open-code vector unops.
(expand_vector_binop): New.
(expand_vector_unop): New.
* c-typeck.c (build_binary_op): Allow vectors in binops.
Allow vectors in conditional operatiors.
(build_unary_op): Allow vectors in unary minus.
* config/rs6000/rs6000.h (ALTIVEC_VECTOR_MODE): Conditionalize on
2002-05-20 Richard Henderson <>
* c-common.c (c_common_get_alias_set): Correctly handle characters.
Rearrange order of expressions; don't handle vectors here.
* alias.c (get_alias_set): Let vectors match their components.
2002-06-19 Chris Demetriou <>
* config/mips/mips.c (mips_emit_prefetch): Use hints which
match desired locality.
2002-06-19 Dhananjay R. Deshpande <>
* config/h8300/h8300.c (TARGET_INSERT_ATTRIBUTES): Define.
(h8300_insert_attributes): New.
2002-06-19 Akim Demaille <>
* (initelt: identifier ':' initval): Add an empty
action to fix a type clash.
(aliasdecl, classdef): Add the missing closing `;'.
Whitespace changes.
* gengtype-yacc.y (typedef_struct): Add an empty action to preevnt
$$ = $1 type clashes.
2002-06-19 Eric Christopher <>
* config/mips/mips.c (symbol_operand): New function.
(mips_emit_prefetch): Ditto.
* config/mips/mips-protos.h: Define.
* config/mips/mips.h (ISA_HAS_PREFETCH): Define.
* config/mips/ (prefetch, prefetch_si_address,
prefetch_si, prefetch_di_address, prefetch_di): New patterns.
2002-06-19 Eric Christopher <>
* config/fp-bit.h: Add unordered defines for gofast.
2002-06-19 Vladimir Makarov <>
checking and without it.
(decl_name, decl_mode_check_failed, regexp_name,
regexp_mode_check_failed): New functions.
(gen_cpu_unit, gen_query_cpu_unit, gen_bypass, gen_excl_set,
gen_presence_set, gen_absence_set, gen_automaton,
gen_regexp_repeat, gen_regexp_allof, gen_regexp_oneof,
gen_regexp_sequence, gen_reserv, gen_insn_reserv,
automaton_decl_hash, automaton_decl_eq_p): Use the macros.
(find_automaton_decl): Ditto. Set up mode of work_automaton_decl.
(insn_decl_hash, insn_decl_hash, insn_decl_eq_p): Use the macros.
(find_insn_decl): Ditto. Set up mode of work_insn_decl.
(decl_hash, decl_eq_p): Use the macros.
(find_decl): Ditto. Set up mode of work_decl.
(process_excls, process_presence_absence, process_decls,
check_automaton_usage, process_regexp, process_regexp_decls,
check_usage, loop_in_regexp, check_loops_in_regexps,
process_regexp_cycles, add_advance_cycle_insn_decl,
initiate_states, initiate_excl_sets,
initiate_presence_absence_sets, copy_insn_regexp, transform_1,
transform_2): Use the macros.
(transform_3): Ditto. Check mode before making transformations of
(regexp_transform_func, transform_insn_regexps,
process_seq_for_forming_states, process_alts_for_forming_states,
create_alt_states, form_ainsn_with_same_reservs, make_automaton,
form_arcs_marked_by_insn, NDFA_to_DFA, set_new_cycle_flags,
estimate_one_automaton_bound, compare_max_occ_cycle_nums,
units_to_automata_heuristic_distr, create_ainsns,
units_to_automata_distr, create_automata): Use the macros.
(form_regexp): Ditto. Fix typo in access to fields of ALLOF.
(longest_path_length, min_issue_delay_pass_states,
output_dead_lock_vect, output_tables, output_insn_code_cases,
output_internal_insn_latency_func, output_print_reservation_func,
output_description, output_automaton_units, generate): Use the
(make_insn_alts_attr): Ditto. Check case when there are not
alternatives in the reservation.
(make_internal_dfa_insn_code_attr, make_default_insn_latency_attr,
make_bypass_attr, form_important_insn_automata_lists,
expand_automata): Use the macros.
2002-06-20 Tim Josling <>
* Clean up code to check for misspecified languages
in enable-languages.
2002-06-19 Andrew Pinski <>
* cpptrad.c (_cpp_replacement_text_len): initialize len.
2002-06-19 Jason Merrill <>
* (unstrap, restrap): New targets.
(bootstrap): Mention restrap.
2002-06-19 Matt Kraai <>
* except.c (ehl_free): Remove.
* doc/tm.texi (TARGET_CPU_CPP_BUILTINS): Correct misnamings of
builtin_define and builtin_define_std.
2002-06-19 Ian Dall <>
* config/ns32k/ Give "*xxx" names to all unnamed insn's.
(sCOND): Restrict operand class so that gcc knows how to reload them.
(bitfield_set): Merge two unnamed insn's using alternatives.
(call_value): Remove constraint on unused uperand.
(udivmodhi4, udivmodsi4, udivmoddihi4_internal): Remove.
(udivmoddiqi4_internal, udivmoddihi4, udivmoddiqi4): Remove.
* longlong.h (count_trailing_zeros): Escape newline and beautify.
2002-06-19 Mark Mitchell <>
* (QMTEST_DIR): Simplify definition.
2002-06-19 Nick Clifton <>
* config/d30v/d30v.h (CUMULATIVE_ARGS): Replace typedef with
2002-06-19 Neil Booth <>
* cpphash.h (struct cpp_reader): Make date and time strings.
(_cpp_builtin_macro_text, _cpp_copy_replacement_text,
_cpp_replacement_text_len): New.
* cppinit.c (cpp_create_reader): Update.
(init_builtins): Register appropriate builtins for -traditional-cpp.
* cppmacro.c (new_number_token): Remove.
(_cpp_builtin_macro_text): New.
(builtin_macro): Use it.
(cpp_macro_definition): Update to handle traditional macros.
* cppmain.c (cb_line_change): Don't do column positioning for
traditional output.
* cpptrad.c (enum ls): Rename ls_fun_macro to ls_fun_open. New
state ls_fun_close.
(skip_whitespace): Fix.
(maybe_start_funlike): Don't set state.parsing_args.
(scan_out_logical_line): Remove duplicate error. Use lex_state
rather than state.parsing_args.
(push_replacement_text): Handle builtins.
(_cpp_replacement_text_len, _cpp_copy_replacement_text): New.
2002-06-18 Hans-Peter Nilsson <>
Kaveh R. Ghazi <>
* config/fp-bit.c (_fpmul_parts, _fpdiv_parts): Mark with
attribute __always_inline__.
2002-06-18 Bob Wilson <>
* config/xtensa/xtensa.h (FUNCTION_PROFILER): Respect flag_pic
when generating the call to _mcount.
2002-06-18 Richard Henderson <>
* print-rtl.c (print_rtx): Adjust NOTE argument numbers for
2002-06-02 change.
Tue Jun 18 20:53:32 2002 J"orn Rennecke <>
* t-sh (MULTILIB_EXCEPTIONS): Set to ml.
config/sh/t-linux (MULTILIB_EXCEPTIONS): Clear.
* config/sh/t-netbsd (MULTILIB_EXCEPTIONS): Likewise.
* config/sh/t-sh64 (MULTILIB_EXCEPTIONS): Likewise.
* sh-protos.h (sh_pr_interrupt): Declare.
* sh.c (sh_pr_interrupt): New function.
(print_operand, calc_live_regs, sh_expand_prologue): Use it.
(sh_hard_regno_rename_ok): Likewise.
* sh.h (NORMAL_MODE): FP_MODE_NONE for interupt handlers.
2002-06-18 Vladimir Makarov <>
* rtl.def (DEFINE_AUTOMATON): Add description of new options
`time' and `v'. Fix incorrect description of option `w'.
* doc/md.texi: Ditto.
* genautomata.c (TIME_OPTION, V_OPTION): New macros.
(gen_automata_option): Process the new options.
(transform_2, transform_3): Initialize some variables.
(initiate_automaton_gen): Use the new macros.
2002-06-18 Richard Sandiford <>
* config/mips/mips-protos.h (mips_initial_elimination_offset): Declare.
(mips_set_return_address, mips_restore_gp): Declare.
* config/mips/mips.h (struct mips_frame_info): Move to mips.c
(current_frame_info): Remove.
(INITIAL_ELIMINATION_OFFSET): Use mips_initial_elimination_offset.
* config/mips/mips.c: Remove uses of current_frame_info.
(struct mips_frame_info): Moved from mips.h. Remove 'insns_len'.
(struct machine_function): Add 'frame' and 'insns_len'.
(current_frame_info, zero_frame_info): Remove.
(mips_restore_gp, mips_set_return_address): New.
(mips_initial_elimination_offset): New.
* config/mips/ (exception_receiver): Use mips_restore_gp.
(eh_return define_split): Use mips_set_return_address.
2002-06-18 Neil Booth <>
* cpplib.c (dtable): Update.
(end_directive): Decrement expansion prevention count.
Clear state.in_expression.
(prepare_directive_trad): Set state.in_expression.
Increment expansion prevention count.
* cpptrad.c (enum ls): New.
(_cpp_overlay_buffer): Set overlaid_buffer.
(_cpp_remove_overlay): Use overlaid_buffer.
(_cpp_read_logcial_line_trad): Update buffer when it might
have changed.
(scan_out_logical_line): Handle state transitions for assertions
and defined() in #if, and for funlike invocations including the
directive case. Handle '<' and '>' as a quote mechanism in
#include. Warn about unterminated macro invocations.
* cpphash.h (struct lexer_state): New member in_expression.
(struct cpp_reader): New member overlaid buffer.
2002-06-18 Hans-Peter Nilsson <>
* config/cris/arit.c (do_31div, __Udiv, __Umod): Mark prototype
2002-06-18 Alan Modra <>
* config/ia64/ (doloop_end_internal): Correct rtl.
* doloop.c (doloop_optimize): Extract pattern from insn.
2002-06-17 Matt Kraai <>
* doc/extend.texi (Function Attributes): Remove `,...' from @var.
2002-06-17 Jeff Law <>
* libgcc2.c: Do not include symcat.h or machmode.h.
2002-06-17 Richard Henderson <>
PR target/6922
* expmed.c (make_tree): Handle SIGN_EXTEND/ZERO_EXTEND.
2002-06-17 Tom Tromey <>
* dwarfout.c: Include function.h.
2002-06-17 Andreas Schwab <>
* print-rtl.c (print_rtx): Print space before vector, not after.
(debug_rtx): Clear sawclose before printing.
(debug_rtx_list): Print newline after each list element.
(debug_rtx_range): Likewise.
2002-06-17 Richard Henderson <>
* function.h (struct function) [funcdef_no]: Rename profile_label_no.
(current_function_funcdef_no): Similarly.
* function.c (funcdef_no): Similarly.
(prepare_function_start): Set current_function_funcdef_no.
(expand_function_start): Don't set current_function_profile_label_no.
* dwarf2out.h (current_funcdef_number): Remove.
* dwarf2out.c (current_funcdef_number): Remove. Replace with
current_function_funcdef_no throughout.
* dwarfout.c, vmsdbgout.c: Similarly.
* except.c (sjlj_funcdef_number): Remove.
(sjlj_emit_function_enter): Use current_function_funcdef_no instead.
(output_function_exception_table): Likewise.
* final.c (profile_function): Use current_function_funcdef_no
instead of current_function_profile_label_no.
2002-06-17 Vladimir Makarov <>
* sched-ebb.c (init_ready_list): Check INSN_P first.
Mon Jun 17 17:26:15 2002 J"orn Rennecke <>
* (divsi3): Update way how to find insns in a sequence.
* reload1.c (merge_assigned_reloads): Don't change reloads
to RELOAD_OTHER when there are conflicting input reloads.
2002-06-17 Richard Earnshaw (
* function.c (epilogue_done): Correctly build a sequence of insns for
a sibcall epilogue.
2002-06-17 Nick Clifton <>
* config/fr30/fr30.h (CUMULATIVE_ARGS): Replace typedef with
* config/m32r/ Replace gen_sequence with get_insns.
2002-06-16 Richard Henderson <>
* config/i386/i386.h (BIGGEST_FIELD_ALIGNMENT): Define instead
2002-06-16 Richard Henderson <>
PR opt/6722
* regclass.c (globalize_reg): Update regs_invalidated_by_call.
2002-06-16 Neil Booth <>
* config.gcc: Add i386/sysv4-cpp.h; remove i386-aout.h from vxworks.
* config/i386/i386-aout.h, config/i386/i386elf.h,
config/i386/sysv4.h: Remove CPP_PREDEFINES.
* config/i386/linux64.h, config/i386/i386elf.h, config/i386/mach.h,
config/i386/netware.h, config/i386/rtemself.h, config/i386/sco5.h,
config/i386/sol2.h, config/i386/vsta.h, config/i386/vxi386.h,
config/i386/win32.h: Use TARGET_OS_CPP_BUILTINS rather than
* config/i386/sysv4-cpp.h: New.
2002-06-16 Richard Henderson <>
PR c/7030
* dwarf2out.c (modified_type_die): Don't assign the qualified die
to the unqualified type.
Sun Jun 16 22:16:10 CEST 2002 Jan Hubicka <>
* i386-protos.h (x86_field_alignment): Declare.
* i386.c (x86_field_alignment): Define.
2002-06-16 Richard Henderson <>
* (casesi): Use emit_jump_insn. Tidy expander pattern.
2002-06-16 Richard Henderson <>
* c-common.c (flag_ms_extensions): Move from c++ front end.
* c-common.h (flag_ms_extensions): Declare.
* c-decl.c (c_decode_option): Add -fms-extensions.
(grokfield): Don't accept anonymous structures in ISO C mode;
accept only unnamed anonymous structures in GNU C mode; accept
Plan 9 extensions in MS mode.
SAVE/RESTORE_WARN_FLAGS; add flag_iso frobbing; update all callers.
(extension): Clear flag_iso.
* doc/invoke.texi (C Dialect Options): Add -fms-extensions.
2002-06-16 Hans-Peter Nilsson <>
PR target/7042
* reorg.c (make_return_insns) [DELAY_SLOTS_FOR_EPILOGUE]: Exit
early if current_function_epilogue_delay_list is non-empty.
* config/cris/ ("return"): Add sanity check asserting that
current_function_epilogue_delay_list is empty.
2002-06-16 Jeff Law <>
* emit-rtl.c (gen_rtx_REG): Temporarily turn off automatic
sharing of hard registers.
* toplev.c (rest_of_compilation): Remove redundant conditional.
* toplev.c (rest_of_compilation): Perform a simpler, less costly
cleanup of the CFG when not optimizing.
2002-06-16 Alan Modra <>
* gcc.c (main): Correct startfile_prefix_spec check.
2002-06-12 Geoffrey Keating <>
* config.gcc: Revert rth's patch of 2002-05-18. Instead,
include both darwin.o and rs6000-c.o.
2002-06-15 Roger Sayle <>
* expr.c (compare_from_rtx): Call simplify_relational_operation
on all comparisons, not just those between integer constants,
with the correct (possibly unsigned) comparison code.
(do_compare_rtx_and_jump): Likewise.
2002-06-15 John David Anglin <>
* (tm_defines): New configuration variable.
(cs-config.h, cs-hconfig.h, cs-tconfig.h): Rename DEFINES to XM_DEFINES.
Pass tm_defines in TM_DEFINES.
(cs-tm_p.h): Rename DEFINES to XM_DEFINES. Pass TM_DEFINES.
* config.gcc (tm_defines): New configuration variable.
(hppa*-*-* | parisc*-*-*): Use tm_defines instead of pa-700.h and
pa-7100.h headers. Change hppa1* scheduling default to 7100LC.
* Substitute tm_defines.
* configure: Rebuilt.
* doc/install.texi: Update.
* pa/pa-700.h: Delete file.
* pa/pa-7100.h: Delete file.
2002-06-15 Roger Sayle <>
* fold-const.c (comparison_to_compcode): New function to convert
an comparison TREE CODE into a bit-based representation.
(compcode_to_comparison): New function to convert from this bit
based representation back to a comparison TREE CODE.
(fold_truthop): Simplify (x<y) && (x==y) and related composite
2002-06-15 Aldy Hernandez <>
* tm.texi (MEMBER_TYPE_FORCES_BLK): Document MODE argument.
* stor-layout.c (compute_record_mode): Remove check for
FUNCTION_ARG_REG_LITTLE_ENDIAN and VOIDmode when checking for
MEMBER_TYPE_FORCES_BLK. Pass new mode field to
* config/ia64/hpux.h (MEMBER_TYPE_FORCES_BLK): Same.
* config/c4x/c4x.h (MEMBER_TYPE_FORCES_BLK): Same.
2002-06-14 Jeff Sturm <>
* config/sparc/sparc.h (DYNAMIC_CHAIN_ADDRESS): Add SPARC_STACK_BIAS.
2002-06-14 Steve Ellcey <>
* (USE_UNWIND_EXCEPTIONS): Add support to set
USE_UNWIND_EXCEPTIONS if --enable-libunwind-exceptions is set.
* configure, Regenerate.
2002-06-14 Eric Botcazou <>
* loop.c (check_final_value): Use v->always_executed
instead of v->always_computable.
* unroll.c (final_giv_value): Don't calculate the final
value as a function of the biv if the giv is not computed
for every loop iteration.
2002-06-14 Eric Botcazou <>
* loop.c (for_each_insn_in_loop): Fix formatting and comments.
2002-06-14 Eric Botcazou <>
PR c/6677
* convert.c (convert_to_integer) [LSHIFT_EXPR]: Don't pass
the truncation down when the target type is signed.
[trunc1]: Use unsigned arithmetic for LSHIFT_EXPR.
* fold-const.c (extract_muldiv) [NOP_EXPR]: Don't pass through
the conversion if the target type is a smaller type.
2002-06-14 Richard Henderson <>
* fold-const.c (fold) [compare ops]: Move X>=C / X<C transfomation
earlier. Re-factor comparisons vs extrema.
2002-06-14 Richard Henderson <>
* config/alpha/ (builtin_zapnot): Fix op2 mode.
2002-06-14 Franz Sirl <>
* sched-deps.c (add_dependence): Likewise.
(group_leader): Likewise.
* sched-rgn.c (init_ready_list): Likewise.
* doc/rtl.texi: Adjust accordingly.
2002-06-13 Jeffrey Law <>
* gcse.c (delete_null_pointer_checks_1): Inform caller if any
null pointer checks were eliminated. Update prototype.
(delete_null_pointer_checks): Similarly.
* rtl.h (delete_null_pointer_checks): Update prototype.
* toplev.c (rest_of_compilation): Only run cleanup_cfg if
delete_null_pointer_checks deletes one or more null
pointer checks. Do not run cleanup_cfg before gcse, the
CFG is accurate and optimized at that point..
* rs6000.c (rs6000_frame_related): Avoid unwanted sharing
of hard registers.
2002-06-14 Ulrich Weigand <>
* ( Depend on specs.
Fri Jun 14 12:15:11 2002 J"orn Rennecke <>
* (mulsi3): Update way how to find insns in a sequence.
Fri Jun 14 12:04:02 2002 Dhananjay R. Deshpande <>
* sh.c: sh_hard_regno_rename_ok: New. If current function has
interrupt_handler attribute, only registers saved on stack are OK.
* sh-protos.h: Declare sh_hard_regno_rename_ok.
2002-06-14 Kaz Kojima <>
* config/sh/ (jump): Emit jump insn.
(call_pcrel): Get pattern of the result of gen_call_site.
(call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.
2002-06-14 Neil Booth <>
* cpphash.h (struct cpp_buffer): Remove saved_line_base.
* cpptrad.c: Update comments.
(skip_whitespace, copy_comment): Take a new parameter.
(skip_escaped_newlines): Don't duplicate escaped newline test.
(copy_comment): Different location for CUR, decide here how
to copy / replace the comment.
(skip_whitespace): Copy whitespace.
(_cpp_overlay_buffer, _cpp_remove_overlay): Don't play with line_base.
(scan_out_logical_line): Let copy comment handle keeping or
replacing comments.
(scan_parameters, _cpp_create_trad_definition): Update.
2002-06-13 Alan Lehotsky <>
* reload.c (get_secondary_mem,find_reloads_address,
find_reloads_address_1): Pass reference to MEM to find_reloads_address
so that LEGITIMIZE_RELOAD_ADDRESS will be called.
2002-06-13 Jessica Han <>
* defaults.h (TARGET_VTABLE_ENTRY_ALIGN): New.
* doc/tm.texi: Document them.
* config/ia64/ia64.h (TARGET_VTABLE_ENTRY_ALIGN): New.
(TARGET_VTABLE_USES_DESCRIPTORS): 4 word descriptors for 32-bit mode.
2002-06-13 Eric Christopher <>
* diagnostic.c (output_format): Fix thinko.
Thu Jun 13 22:34:33 2002 J"orn Rennecke <>
* config/sh/coff.h (HAS_INIT_SECTION, INVOKE__MAIN): Don't define.
(DWARF2_UNWIND_INFO): Define to 0.
* config/sh/sh.c (calc_live_regs): Don't use initial_value
optimization for PR_MEDIA_REG.
2002-06-13 Neil Booth <>
* cpphash.h (_cpp_lex_identifier_trad): Remove.
* cpplib.c (end_directive): Don't skip, always remove overlay
apart from #define.
(prepare_directive_trad): Handle NULL pfile->directive.
(_cpp_handle_directive): Always call prepare_directive_trad
if traditional.
* cppmain.c (check_multiline_token): Rename account_for_newlines,
generalize inputs.
(scan_translation_unit_trad): Use it.
* cpptrad.c (skip_comment): Rename copy_comment, copy comment to
output, get escaped newline in comment close correct.
(check_output_buffer, skip_whitespace): Update.
(_cpp_lex_identifier_trad): Remove.
(scan_out_logical_line): Handle -C and comments in directives
Thu Jun 13 20:18:38 2002 J"orn Rennecke <>
* config.gcc: Add support for sh[234]*-*-elf*, sh[2346lbe]*-*-linux*.
* config/sh/linux.h (TARGET_DEFAULT): Use TARGET_CPU_DEFAULT.
* sh.h (SELECT_SH1, SELECT_SH2, SELECT_SH3, SELECT_SH3E): New macros.
(TARGET_CPU_DEFAULT): Define if not already defined.
* config/sh/t-linux (MULTILIB_OPTIONS): Use MULTILIB_ENDIAN.
* config/sh/t-monolib: New file.
2002-06-13 Roger Sayle <>
* toplev.c (rest_of_compilation): Simplify (and correct) the
logic of the first delete-null-pointer-checks pass.
Thu Jun 13 18:24:17 CEST 2002 Jan Hubicka <>
* i386.c (ix86_expand_movstr): Fix pasto.
Thu Jun 13 18:18:17 CEST 2002 Jan Hubicka <>
* reload.c (find_valid_class): Fix thinko in my previous patch.
2002-06-13 Ulrich Weigand <>
* config/s390/s390.h (TARGET_CPU_CPP_BUILTINS): New macro.
* config/s390/linux.h (TARGET_OS_CPP_BUILTINS): New macro.
(EXTRA_SPECS): Remove cpp_arch31 and cpp_arch64.
2002-06-13 Gabriel Dos Reis <>
* tree-inline.c (expand_call_inline): Don' mess with _DECL
2002-06-13 Gabriel Dos Reis <>
* diagnostic.c (output_format): Recognize "%H" as a format
specifier for a location_t.
(text_specifies_location): New function.
(diagnostic_set_info): Use it.
2002-06-13 Jeffrey Law <>
* emit-rtl.c (static_regno_reg_rtx): Define.
(init_emit_once): Initialize static_regno_reg_rtx.
(init_emit): Copy static_regno_reg_rtx into regno_reg_rtx instead
of building new hard reg objects once per function.
(gen_rtx_REG): Try to share hard regs.
* regclass.c (init_fake_stack_mems): New function broken out from
* rtl.h (init_fake_stack_mems): Declare.
* toplev.c (lang_independent_init): Call init_regs before
init_emit_once. Call init_fake_stack_mems after init_emit_once.
* (extenddfxf2, extenddftf2): Fix typo/thinko.
* alias.c (argument_registers): Remove.
(init_alias_once): Initialize static_reg_base_value here. Remove
initialization of argument_registers.
(init_alias_once_per_function): Remove.
(init_alias_analysis): Copy all the entries from static_reg_base_value
into new_reg_base_value all at once.
* rtl.h (init_alias_once_per_function): Remove declaration.
* function.c (prepare_function_start): Do not call
* caller-save.c (init_caller_save): Use gen_rtx_INSN instead of
starting a sequence and emitting an INSN.
2002-06-13 Richard Sandiford <>
* config/mips/r3900.h (MIPS_CPU_STRING_DEFAULT): Make lower case.
2002-06-13 David S. Miller <>
* expmed.c (init_expmed): Remove duplicate init of 'reg'.
2002-06-13 Neil Booth <>
* cpplib.c (end_directive): Handle line skipping. Only remove
the rest of the line if the directive was valid.
* cppmacro.c (_cpp_push_text_context): Set NODE_DISABLED when
expanding a traditional macro.
* cpptrad.c (recursive_macro): New.
(read_logical_line_trad): Handle skipping.
(scan_out_logical_line): Continue after a successful directive.
Don't expand macros whilst skipping, or if recursing.
(_cpp_create_trad_definition): scan_out_logical_line now sets
the output current position.
2002-06-12 Eric Christopher <>
From Chris Demetriou <>
* config/mips/mips.h (ISA_HAS_FP4): Add ISA_MIPS64 and fix
2002-06-12 Eric Christopher <>
* config.gcc: Consolidate little endian handling and
little/big endian targets.
* config/mips/elfl.h: Remove file.
* config/mips/elfl64.h: Ditto.
* config/mips/ecoffl.h: Ditto.
* config/mips/r3900.h (SUBTARGET_CPP_SPEC): Remove.
2002-06-12 Geoffrey Keating <>
* gengtype.h (xvasprintf): New prototype.
(xasprintf): New prototype.
(struct outf): New.
(get_output_file): Return an outf_p.
(header_file): Is now an outf_p.
(base_files): Now are outf_p.
(oprintf): New.
* gengtype.c: Replace all output FILE * with outf_p; use oprintf
rather than stdio operations. Use xasprintf in a few places,
when appropriate.
(xvasprintf): New.
(xasprintf): New.
(struct filemap): Delete.
(files): Delete.
(output_files): New.
(oprintf): New.
(create_file): Create an outf_p. Add parameter to indicate output
file name, change all callers.
(open_base_files): Create gtype-desc.c here.
(get_output_file_with_visibility): Rewrite.
(get_output_file_name): Just look at 'name' field in struct outf.
(close_output_files): Rewrite.
2002-06-12 Jason Thorpe <>
(MASK_G_FLOAT): Define.
2002-06-12 Daniel Jacobowitz <>
* config/mips/elf.h (DWARF2_DEBUG_INFO): Define.
* config/mips/mips.c (mips_output_filename): Don't print a
".file" directive if we are using DWARF-2.
(mips_output_function_prologue): Do not emit source file
name for TARGET_GAS.
Wed Jun 12 16:45:13 CEST 2002 Jan Hubicka <>
* (shift patterns): Use (TARGET_SHIFT1 || optimize_size) to
decide whether emit the short opcode.
* i386.h (x86_shift1): Declare.
(TARGET_SHIFT1): New macro.
* i386.c (x86_shift1): New global variable.
* toplev.c (rest_of_compilation): Call find_basic_block pre-loop
unconditionally; make loop to rebuild CFG; kill unnecesary
find_basic_block calls; kill compute_bb_for_insn call.
* cfgbuild.c (find_basic_blocks): Kill compute_bb_for_insn call.
* haifa-sched.c (sched_init): Likewise.
* ssa-ccp.c (ssa_const_prop): Likewise.
* ssa-dce.c (ssa_eliminate_dead_code): Likewise.
2002-06-11 David S. Miller <>
* emit-rtl.c (emit_*_scope): Only access INSN_SCOPE if
2002-06-11 Richard Henderson <>
* c-common.c (builtin_define_type_max): New.
(cb_register_builtins): Define __SCHAR_MAX__, __SHRT_MAX__,
From Joseph S. Myers:
* glimits.h: Rewrite to expect the double underscore definitions
from the compiler.
* config/alpha/unicosmk.h, config/avr/avr.h, config/h8300/h8300.h,
config/i386/linux64.h, config/ia64/aix.h, config/ia64/hpux.h,
config/ia64/ia64.h, config/m68hc11/m68hc11.h, config/m68hc11/m68hc12.h,
config/mips/mips.h, config/mmix/mmix.h, config/mn10200/mn10200.h,
config/pa/pa.h, config/rs6000/aix43.h, config/rs6000/aix51.h,
config/rs6000/linux64.h, config/s390/linux.h, config/sh/sh.h,
config/stormy16/stormy16.h: Don't define any of __SHRT_MAX__,
__INT_MAX__, __LONG_MAX__, or __LONG_LONG_MAX__.
2002-06-11 Richard Henderson <>
* config/alpha/alpha.c (ALPHA_BUILTIN_THREAD_POINTER): New.
(code_for_builtns): Update.
(alpha_init_builtins): Add __builtin_thread_pointer and
(alpha_expand_builtin): Handle void builtins.
* doc/extend.texi (Alpha Built-in Functions): Update.
2002-06-11 Hans-Peter Nilsson <>
PR target/6997
* config/cris/ ("sleu"): Set attribute "cc" to "none".
2002-06-11 Zack Weinberg <>
* config.gcc: Make the name of the extra-modes file adjustable
by target stanzas.
(s390x, strongarm, xscale stanzas): Use this facility.
* Update to match.
* configure: Regenerate.
2002-06-11 Aldy Hernandez <>
* config/rs6000/rs6000.c (rs6000_emit_minmax): Treat unsigned
max/mins as unsigned GE compares.
2002-06-11 Jason Thorpe <>
* config.gcc (vax-*-bsd*): Add vax/bsd.h to ${tm_file}.
* config/vax/bsd.h: New file.
* config/vax/netbsd.h: Add missing notice.
* config/vax/openbsd.h: Update copyright years.
* config/vax/ultrix.h: Likewise.
* config/vax/vaxv.h: Likewise.
* config/vax/vms.h: Likewise.
* config/vax/vax.h (TARGET_CPU_CPP_BUILTINS): Define.
Wed Jun 12 01:50:28 CEST 2002 Jan Hubicka <>
* (addqi_1_slp, subqi_1_slp
(andqi_ext0, testqi_ext0): Remove unnecesary check.
(addhi*, addqi*): Simplify "dec" condition.
(testsi to testqi splitters): Remove TARGET_PROMOTE_QImode check.
(and, or, xor to QImode splitters): New.
(iorqi_ext*): New.
(xorqi_ext_0): New.
(xorqi_ext_1): Rename to xorqi_ext_2; bring to sync with and versions.
(andqi_ext_1_rex64): New.
(ashrqi*_slp): New.
(ashlqi*_slp): New.
(lshlqi*_slp): New.
(rotrqi3*_slp): New.
(rotlqi3*_slp): New.
2002-06-11 Geoffrey Keating <>
* config.gcc (powerpc*-*-*, rs6000-*-*-*): Don't bother including
* config/rs6000/vxppc.h (CPP_ENDIAN_BIG_SPEC): Delete.
* config/rs6000/sysv4le.h (CPP_ENDIAN_DEFAULT_SPEC): Delete.
* config/rs6000/sysv4.h (CPP_SYSV_SPEC): Delete _SOFT_FLOAT setting,
__LONG_DOUBLE_128__ setting, _CALL_* setting.
(CPP_SPEC): Don't include cpp_endian, cpp_cpu.
(SUBTARGET_EXTRA_SPECS): Delete cpp_sysv_default, cpp_endian_default,
cpp_endian, cpp_endian_big, cpp_endian_little, cpp_float_default,
* config/rs6000/softfloat.h: Delete.
* config/rs6000/rs6000.h (CPP_CPU_SPEC): Delete.
(EXTRA_SPECS): Delete cpp_cpu.
* config/rs6000/rs6000-protos.h (rs6000_cpu_cpp_builtins): New
* config/rs6000/rs6000-c.c (rs6000_cpu_cpp_builtins): New.
* config/rs6000/linux64.h (CPP_PREDEFINES): Remove endianness defines.
* config/rs6000/eabiaix.h (CPP_SYSV_DEFAULT_SPEC): Delete.
* config/rs6000/darwin.h (CPP_PREDEFINES): Don't define __BIG_ENDIAN__.
* config/rs6000/beos.h (CPP_SPEC): Remove cpp_cpu.
* config/rs6000/aix51.h (CPP_SPEC): Remove cpp_cpu, -D_ARCH_PPC.
(CPP_CPU_SPEC): Delete.
* config/rs6000/aix43.h (CPP_SPEC): Remove cpp_cpu, -D_ARCH_PPC.
(CPP_CPU_SPEC): Delete.
* config/rs6000/aix41.h (CPP_SPEC): Remove cpp_cpu.
* config/rs6000/aix.h (CPP_SPEC): Remove cpp_cpu.
* doc/gty.texi: Small updates.
2002-06-12 Gabriel Dos Reis <>
* objc/objc-act.c (warn_with_ivar): Adjust calls to
(warn_with_method): Likewise.
* diagnostic.h (warnings_are_errors_message): New field of
(diagnostic_count_error): Rename to diagnostic_count_diagnostic to
match semantics.
* diagnostic.c: Adjust calls to diagnostic_count_error through out.
(diagnostic_count_diagnostic): Make aware of other kinds of
(diagnostic_initialize): Initialize warnings_are_errors_message field.
2002-06-11 Tom Tromey <>
For PR java/6520:
* fold-const.c (fold_convert): Don't modify existing tree's type.
2002-06-11 Geoffrey Keating <>
* config/rs6000/ppc-asm.h: Remove some Windows NT leftovers.
2002-06-11 Richard Henderson <>
* caller-save.c (init_caller_save): Clear INSN_CODE each iteration.
2002-06-11 Richard Henderson <>
* defaults.h (EH_FRAME_SECTION_NAME): Don't define if
2002-06-11 Bob Wilson <>
* config/xtensa/t-xtensa (LIBGCC1_TEST, CROSS_LIBGCC1): Delete.
* config/s390/s390.c (emit_prologue): gen_store_multiple
returns an insn now, not a pattern.
2002-06-11 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* (gccinstall.dvi): Pass absolute pathnames to
$(TEXI2DVI) -o.
Tue Jun 11 21:53:37 CEST 2002 Jan Hubicka <>
* i386.c (x86_promote_QImode): Set for Athlon
(x86_fast_prefix): New global variable.
(x86_arch_always_fancy_math_387): Fix formating.
* i386.h (x86_fast_prefix): Declare
* (and to strict_low_part, HI to SI
promoting splitter): Use new macro.
* i386.h (RTX_COSTS): float_extend is not for free for SSE.
2002-06-11 Zack Weinberg <>
* (distclean): Delete junk left in testsuite
directory, too.
2002-06-11 Jeffrey Law <>
* emit-rtl.c (try_split): Use INSN_LAST, not LAST_INSN to get the
last insn created by the splitter.
* caller-save.c (init_caller_save): Move creation of SAVEINSN
and RESTINSN into into the scope of the sequence.
* mips.c (mips_expand_prologue): Use emit_jump_insn for trivial
RETURN insns.
* loop.c (loop_regs_scan): Avoid useless generation of REG objects.
* mips.c (function_arg_advance): gen_ashldi3 returns an INSN now,
not the pattern. So extract the pattern from the insn.
* mips.c (embedded_pic_fnaddr_reg): Fix typo.
2002-06-11 Ulrich Weigand <>
* config/s390/ (movsi): Only use floating point
register alternatives when operands are already fprs.
(movdi_31, movdi_64): Likewise.
2002-06-11 David S. Miller <>
* emit-rtl.c (try_split): Do not abort on non-INSN_P.
Only run RTX equality checks on INSN_P rtl.
2002-06-11 Ulrich Weigand <>
* config/s390/ (reload_base, ltorg): Remove.
* s390.c (s390_stop_dump_lit_p, s390_dump_literal_pool,
s390_asm_output_pool_prologue, s390_pool_start_insn): Remove.
* s390-protos.h (s390_stop_dump_lit_p, s390_dump_literal_pool,
s390_asm_output_pool_prologue): Likewise.
* s390.h (s390_pool_start_insn): Likewise.
* s390.c (s390_output_symbolic_const): Remove support for
old-style pool chunks.
(s390_function_epilogue): Likewise.
(s390_output_constant_pool): Likewise. Also, fix incorrect
alignment for 64-bit literal pools.
(print_operand_address): Remove 'y' and 'Y' format flags.
* s390.h (ASM_OUTPUT_POOL_PROLOGUE): Remove support for
old-style pool chunks.
(S390_CHUNK_MAX, S390_CHUNK_OV, S390_POOL_MAX): Remove.
* s390.c (consttable_operand): New function.
* s390-protos.h (consttable_operand): Declare it.
* s390.h (PREDICATE_CODES): Add consttable_operand.
* (consttable_qi, consttable_hi, consttable_si, consttable_di,
consttable_sf, consttable_df, pool_start_31, pool_end_31,
pool_start_64, pool_end_64, reload_base, reload_base2): New insns.
* s390.c (struct constant, struct constant_pool): New data types.
(constant_modes, gen_consttable): New variables.
(s390_start_pool, s390_end_pool, s390_add_pool,
s390_dump_pool, s390_free_pool): New functions.
(s390_chunkify_pool): Completely reimplement literal pool
overflow handling.
* s390.c (s390_pool_overflow): New variable.
* s390.h (s390_pool_overflow): Declare it.
* (cjump, icjump): Use it to adapt length for out-of-range
jumps in literal pool overflow situations.
* s390.c (s390_decompose_address): Accept new-style pool chunk offsets.
(s390_frame_info): Account for possible use of RETURN_REGNUM
by new literal pool overflow code.
(s390_emit_prologue): Likewise.
2002-06-05 David S. Miller <>
Delete SEQUENCE rtl usage outside of reorg and ssa passes.
* rtl.h (gen_sequence, emit_insns, emit_insns_before,
emit_insns_before_scope, emit_insns_after,
emit_insns_after_scope): Delete declaration.
* ada/misc.c (insert_code_for): Use emit_insn* instead of
* config/alpha/alpha.c (alpha_set_memflags_1): Abort on SEQUENCE.
(alpha_set_memflags): Fix comment.
(set_frame_related_p): Use get_insns instead of gen_sequence.
* config/alpha/ (setjmp receiver splitter): Avoid
emitting no insns.
* config/arm/arm.c (arm_finalize_pic): Use get_insns instead of
(arm_gen_load_multiple, arm_gen_store_multiple): Likewise.
* config/fr30/fr30.c (fr30_move_double): Likewise.
* config/i386/i386.c (ix86_expand_int_movcc, ix86_expand_movstr):
* config/ia64/ia64.c (spill_restore_mem): Likewise.
* config/ia64/ (conditional move spliiter): Avoid emitting
no insns.
* config/m32r/m32r.c (gen_split_move_double): Use get_insns
instead of gen_sequence.
* config/mips/mips.c (embedded_pic_fnaddr_reg): Likewise.
(mips_expand_prologue, mips16_gp_pseudo_reg): Likewise.
* config/sh/sh.c (sh_need_epilogue): Likewise.
* config/sparc/ (current_function_calls_alloca, flat): New
(setjmp pattern and split): Use them to avoid splitter which emits
no RTL.
* genattrtab.c (main): Emit include of function.h
* config/stormy16/stormy16.c (xstormy16_split_cbranch): Use
get_insns instead of gen_sequence.
* config/cris/cris.c (cris_split_movdx): Likewise.
* emit-rtl.c (emit_insns*): Kill.
(try_split): Expect insn list instead of SEQUENCE.
(make_jump_insn_raw, make_call_insn_raw): Fix comments.
(emit_*insn*): Reimplement to work with INSN lists and PATTERNs.
Make them abort if a SEQUENCE is given and RTL checking is
(emit_*_scope): Don't forget to set scope on final insn.
(gen_sequence): Move from here...
* ssa.c (gen_sequence): To here as private function.
* builtins.c (expand_builtin_apply_args): Use emit_insn_foo, fix
(expand_builtin_return, expand_builtin_mathfn): Likewise.
(expand_builtin_strlen): Use get_insns instead of gen_sequence.
(expand_builtin_saveregs): Use emit_insn_foo, fix comments.
(expand_builtin_expect_jump): Use get_insns and fix comments.
* calls.c (try_to_integrate): Use emit_insn_foo.
(expand_call, emit_library_call_value_1): Likewise.
* expr.c (emit_queue): Handle insn lists instead of SEQUENCE.
(emit_move_insn_1): Use get_insns instead of gen_sequence.
(expand_expr): Use emit_insn_foo.
* cfgrtl.c (commit_one_edge_insertion): Use emit_insn_foo.
* except.c (build_post_landing_pads): Likewise.
* flow.c (attempt_auto_inc): Likewise.
* stmt.c (expand_fixup, fixup_gotos, expand_nl_handler_label,
expand_nl_goto_receivers, expand_decl_cleanup): Likewise.
* function.c (fixup_var_refs_insn): Use get_insns instead of
(fixup_var_refs_1): Likewise and expect insn list from gen_foo.
(fixup_memory_subreg): Use get_insns instead of gen_sequence.
(fixup_stack_1, purge_addressof_1, expand_main_function,
get_arg_pointer_save_area): Likewise.
(optimize_bit_field, instantiate_virtual_regs_1, assign_parms,
expand_function_end): Use emit_insn_foo.
(record_insns, keep_stack_depressed): Work with insn list instead
of SEQUENCE, fix comments.
* ifcvt.c (noce_emit_store_flag, noce_try_store_flag,
noce_try_store_flag_constants, noce_try_store_flag_inc,
noce_try_store_flag_mask, noce_emit_cmove, noce_try_cmove_arith,
noce_try_minmax, noce_try_abs): Use emit_insn_foo.
(noce_process_if_block): Use get_insns instead of gen_sequence.
* optabs.c (add_equal_note): Work with insn list, fix comments.
(expand_binop): Expect insn list from GEN_FCN(), use emit_insn_foo.
(expand_unop, expand_complex_abs, expand_unop_insn,
expand_no_conflict_block): Likewise.
(gen_move_insn): Use get_insns instead of gen_sequence.
(gen_cond_trap): Likewise.
* integrate.c (copy_rtx_and_substitute): Likewise.
(emit_initial_value_sets): Use emit_insn_foo.
* reload1.c (emit_output_reload_insns, emit_reload_insns): Likewise.
(fixup_abnormal_edges): Avoid losing REG_NOTES more intelligently
now that RTL generators give insn lists.
* sibcall.c (replace_call_placeholder): Use emit_insn_foo.
* doloop.c (doloop_modify, doloop_modify_runtime): Use get_insns
instead of gen_sequence.
(doloop_optimize): Work with insn lists instead of SEQUENCE rtl.
* explow.c (emit_stack_save, emit_stack_restore): Use get_insns
instead of gen_sequence.
* loop.c (move_movables, emit_prefetch_instructions,
gen_add_mult, check_dbra_loop, gen_load_of_final_value):
(loop_regs_update): Work with insn list instead of SEQUENCE rtl.
(product_cheap_p): Likewise, and add commentary about RTL wastage
* lcm.c (optimize_mode_switching): Use get_insns instead of
* profile.c (gen_edge_profiler): Likewise.
* regmove.c (copy_src_to_dest): Likewise.
* reg-stack.c (compensate_edge): Likewise and fix comment.
* gcse.c (process_insert_insn): Likewise.
(insert_insn_end_bb): Work with insn list instead of SEQUENCE rtl.
* jump.c (delete_prior_computation): Update comment.
* genemit.c (gen_expand, gen_split, main): Use get_insns instead
of gen_sequence, update comments to match.
* recog.c (peephole2_optimize): Work with insn lists instead of
* sched-vis.c (print_pattern): Abort on SEQUENCE.
* unroll.c (unroll_loop, find_splittable_givs, final_giv_value):
Use get_insns instead of gen_sequence.
(copy_loop_body): Likewise and don't emit dummy NOTE.
* genrecog.c: Don't mention SEQUENCE rtl in comments.
* combine.c (try_combine): Expect insn lists from split generator.
* reorg.c (relax_delay_slots): Emit SEQUENCE into insn list by
2002-06-11 Roger Sayle <>
Andreas Jaeger <>
* cfgbuild.c: Update copyright years.
2002-06-11 Andreas Schwab <>
* config/m68k/m68k.h (PREDICATE_CODES): Define.
2002-06-11 Eric Christopher <>
* doc/tm.texi (Run-time Target): Add comment about flag_iso
and strict ANSI.
* config/mips/ecoff.h (CPP_PREDEFINES): Remove.
* config/mips/ecoffl.h: Ditto.
* config/mips/elf64.h (SUBTARGET_CPP_SPEC): Remove.
* config/mips/elfl64.h: Ditto.
* config/mips/elfl.h: Ditto.
* config/mips/iris3.h (CPP_PREDEFINES, SUBTARGET_CPP_SPEC): #if 0
out until irix header consolidation.
* config/mips/iris5.h (CPP_PREDEFINES, SUBTARGET_CPP_SPEC): Replace
* config/mips/iris6.h: Ditto.
* config/mips/linux.h: Ditto.
* config/mips/netbsd.h: Ditto.
* config/mips/openbsd.h: Ditto.
* config/mips/rtems.h: Ditto.
* config/mips/rtems64.h: Ditto.
* config/mips/sni-svr4.h: Ditto.
* config/mips/mips.h (ISA_MIPS1, ISA_MIPS2, ISA_MIPS3, ISA_MIPS4,
ISA_MIPS32, ISA_MIPS64): New defines.
* config/mips/ (mulsi3_mult3): Use ISA_MIPS32/64.
(movdicc): Remove check for ISA_MIPS32.
(bunordered, bordered, bungt, bunlt, buneq, bunge, bunle,
sunordered_df, sunordered_sf, sordered_df, sordered_sf,
sunlt_df, sunlt_sf, sungt_df, sungt_sf, suneq_df, suneq_sf, sunge_df,
sunge_sf, sunle_df, sunle_sf): New patterns.
2002-06-11 Neil Booth <>
* Update cppmain.o.
* cpphash.h (struct cpp_reader): Move some members to a
nested structure.
(trad_line): Rename saved_line.
(_cpp_read_logical_line_trad): Update.
(_cpp_remove_overlay): New.
* cppinit.c (cpp_create_reader): No need to set saved_line.
(cpp_destroy): Update.
(cpp_read_main_file): Only overlay if compiling.
* cpplex.c (continue_after_nul): Return false if in directive.
* cpplib.c (EXPAND): New.
(directive_table, SEEN_EOL): Update.
(end_directive): Remove overlay if traditional; don't skip
line in traditional #define.
(prepare_directive_trad): New.
(_cpp_handle_directive, run_directive): Update for traditional
(lex_macro_node): Simplify, don't use lex_identifier_trad.
* cpplib.h (struct options): Add preprocess_only.
* cppmain.c: Don't include intl.h.
(cpp_preprocess_file): Set options->preprocess_only.
(scan_translation_unit_trad): Fix, and print line numbers.
* cpptrad.c (check_output_buffer, lex_identifier, scan_parameters,
maybe_start_funlike, scan_out_logical_line, replace_args_and_push,
save_replacement_text, _cpp_create_trad_definition): Update for
variable renaming.
(_cpp_overlay_buffer): Save line number.
(_cpp_remove_overlay): Rename from restore_buff, restore line.
(_cpp_read_logical_line_trad): Don't handle overlays here.
(scan_out_logical_line): Process directives.
2002-06-11 Danny Smith <>
* gthr-win32.h: Wrap functions in extern "C".
(__gthread_key_t): Typedef as unsigned long,
not win32 DWORD.
(__GTHREAD_ONCE_INIT): Use 0, not win32 FALSE.
(__gthread_mutex_t): Typedef as void*, not win32 HANDLE.
(__gthr_win32_once, __gthr_win32_key_create,
__gthr_win32_key_delete, __gthr_win32_getspecific,
__gthr_win32_setspecific, __gthr_win32_mutex_init_function,
__gthr_win32_mutex_unlock): Declare.
__gthread_key_delete, __gthread_getspecific,
__gthread_setspecific, __gthread_mutex_init_function,
__gthread_mutex_unlock): Call corresponding
__gthr_win32_* extern implementations if #defined
* config/i386/t-mingw32 (LIB2FUNCS_EXTRA): Set to
* config/i386/gthr-win32.c: New implementation file.
(__gthr_win32_once, __gthr_win32_key_create,
__gthr_win32_key_delete, __gthr_win32_getspecific,
__gthr_win32_setspecific, __gthr_win32_mutex_init_function,
__gthr_win32_mutex_unlock): New functions, based on
static inlines in gthr-win32.h.
2002-06-10 Bob Wilson <>
* config/xtensa/xtensa.c (override_options): Don't warn about
using -fpic or -fPIC when PIC is enabled by default.
2002-06-10 Roger Sayle <>
* toplev.c (rest_of_compilation): Revert flag_if_conversion change.
2002-06-10 Zack Weinberg <>
* (MACHMODE_H): Add @extra_modes_file@.
* If $srcdir/config/${cpu_type}/${cpu_type}-modes.def
exists, substitute its pathname as @extra_modes_file@, define
EXTRA_MODES_FILE to be an appropriate string to #include it
with, and define EXTRA_CC_MODES to 1.
* machmode.def: Update comments. Include EXTRA_MODES_FILE if
it's defined. Get rid of redundancy in calling sequence for
CC; don't use it to define CCmode, to avoid a warning.
* libgcc2.c: Include symcat.h for the sake of machmode.def.
* arc-modes.def, arm-modes.def, c4x-modes.def, i386-modes.def,
i960-modes.def, ia64-modes.def, m88k-modes.def, mmix-modes.def,
pa-modes.def, pdp11-modes.def, rs6000-modes.def, sparc-modes.def:
New files.
* arc.h, arm.h, c4x.h, i386.h, i960.h, ia64.h, m88k.h, mmix.h,
pa.h, pdp11.h, rs6000.h, sparc.h: Don't define EXTRA_CC_MODES.
* doc/sourcebuild.texi, doc/tm.texi: Document new scheme for
defining extra CC modes.
2002-06-10 Roger Sayle <>
Andreas Jaeger <>
* cfgrtl.c (create_basic_block_structure): Remove index argument
and use last_basic_block++ instead. (create_basic_block): Update.
* cfgbuild.c (find_basic_blocks_1): Likewise.
* cfgrtl.c (compute_bb_for_insn): Remove unused "max" argument.
* haifa-sched.c (sched_init): Update compute_bb_for_insn caller.
* sched-ebb.c (schedule_ebbs): Likewise.
* sched-rgn.c (schedule_insns): Likewise.
* ssa-ccp.c (ssa_const_prop): Likewise.
* ssa-dcs.c (ssa_eliminate_dead_code): Likewise.
* toplev.c (rest_of_compilation): Likewise.
* config/ia64/ia64.c (ia64_reorg): Likewise.
2002-06-10 Roger Sayle <>
* simplify-rtx.c (simplify_replace_rtx): Allow replacement
of matching registers.
2002-06-10 Roger Sayle <>
* toplev.c (rest_of_compilation): Disable early if-conversion pass.
* gcse.c (bypass_conditional_jumps): Fix typo in setcc test.
2002-06-10 Hans-Peter Nilsson <>
* config/mmix/mmix.h: Improve comments.
(CANONICALIZE_COMPARISON): Don't define, replace with comment.
(PREDICATE_CODES) <"mmix_reg_or_8bit_or_256_operand">: Remove
unused predicate.
* config/mmix/mmix.c (MMIX_OUTPUT_REGNO): Add cast to avoid
compiler warning.
(mmix_constant_address_p): Remove another
redundant test before case.
(mmix_canonicalize_comparison): Remove unused function.
(mmix_print_operand_address): Don't test and adjust for operand in
non-canonical format.
(mmix_reg_or_8bit_or_256_operand): Remove unused predicate.
(mmix_gen_compare_reg): Don't use CANONICALIZE_COMPARISON.
2002-06-10 Zack Weinberg <>
* config/m32r/m32r.h: Don't define SELECT_CC_MODE.
* config/m32r/m32r-protos.h: Don't prototype m32r_select_cc_mode.
* config/m32r/m32r.c: Don't define m32r_select_cc_mode.
(gen_compare): Use CCmode unconditionally.
2002-06-10 Jakub Jelinek <>
PR optimization/6759
* cse.c (cse_insn): Fold src_eqv just once, store it folded back into
the REQ_EQUAL note.
2002-06-10 Jakub Jelinek <>
PR c/6660
* c-decl.c (grokfield): Allow user defined types if they declare
structs or unions for unnamed fields.
2002-06-10 Jakub Jelinek <>
PR c/6809
* print-rtl.c (print_mem_expr): Don't crash on unnamed fields.
2002-06-10 Jakub Jelinek <>
PR optimization/6842
* combine.c (combine_simplify_rtx) [SUBREG]: Don't ICE if VOIDmode
operand subreg cannot be simplified.
2002-06-10 Jakub Jelinek <>
* varasm.c (const_hash): Handle FDESC_EXPR like ADDR_EXPR.
(compare_constant): Likewise.
(output_addressed_constants): Likewise.
2002-06-10 Jakub Jelinek <>
* cfgcleanup.c (try_optimize_cfg): Make sure merge_blocks doesn't
merge bb with itself.
2002-06-10 Richard Henderson <>
* config/alpha/ (builtin_zap): Fix thinkos expanding mask.
(builtin_zapnot): Likewise.
* config/alpha/ Don't combine shift and mvi insns in one
2002-06-10 Eric Christopher <>
* config/i386/i386.c (ix86_osf_output_function_prologue): Remove
prototype and function.
(call_insn_operand): Remove half pic references.
(legitimate_address_p): Ditto.
* config/i386/i386.h: Remove half pic defines.
2002-06-10 Eric Christopher <>
* doc/extend.texi (Return Address): Add note explaining the side-
effects of inlining on __builtin_return_address.
2002-06-10 Tom Tromey <>
* (LANGHOOKS_DEF_H): Include langhooks-def.h.
(c-common.o): Depend on langhooks.h.
2002-06-10 Neil Booth <>
* cpphash.h (_cpp_read_logical_line_trad,
_cpp_expansions_different_trad): Update prototypes.
* cpplex.c (continue_after_nul): New.
* cppmain.c: Include cpphash.h.
(scan_translation_unit_trad): New.
(cpp_preprocess_file): Call it.
* cpptrad.c (_cpp_read_logical_line_trad): Take new parameter
(_cpp_expansions_different_trad): Update prototype.
Mon Jun 10 18:02:24 2002 J"orn Rennecke <>
Fix cfi generation for SH[1-4]:
* sh.c (frame_insn): New function.
(output_stack_adjust): Add parameter emit_fn. All callers changed.
(push): Now returns rtx. Use frame_insn.
(sh_expand_prologue): Clear RTX_FRAME_RELATED_P for second push
of a DF register.
2002-06-10 Zack Weinberg <>
* (STAGESTUFF): Add s-gtype, gt-*.h, gtype-*.h,
and gtype-desc.c.
(mostlyclean): Delete specs.h, options.h, gencheck.h here...
(distclean): ... not here. But do delete all testsuite/*.log,
testsuite/*.sum files here. Delete mkheaders. Delete
po/*.gmo and the testsuite directory in a split tree build.
2002-06-10 Jeffrey Law <>
* alias.c (static_reg_base_value): New to hold RTL for
items allocated once per function for the aliasing code.
(init_alias_once_per_function): Initialize static_reg_base_value.
(init_alias_analysis): Avoid throw-away allocations of RTL by
using pre-computed values in static_reg_base_value.
* function.c (prepare_function_start): Call
init_alias_once_per_function appropriately.
* rtl.h (init_alias_once_per_function): Declare.
* caller-save (init_caller_save): Restructure slightly to
avoid lots of silly RTL generation.
* expr.c (init_expr_once): Likewise.
* reload1.c (reload_cse_regs_1): Allocate throw-away register
RTL object here. Pass it into children.
(reload_cse_simplify_operands): Use passed-in register RTL
(reload_cse_simplify): Pass through throw-away register
RTL object.
2002-06-10 Daniel Berlin <>
* (ssa.o): Add dependency on $(RTL_H), which was missing.
2002-06-10 Richard Sandiford <>
* gcc.c (process_command): Avoid assignment to read-only location.
Fix sizeof calculation.
2002-06-10 Neil Booth <>
* cpphash.h (struct cpp_macro): Put comments on their own lines.
(_cpp_expansions_different_trad): New.
* cppmacro.c (warn_of_redefinition): Fix for traditional case.
* cpptrad.c (canonicalize_text): New.
(scan_out_logical_line): Handle no arguments correctly.
(save_replacement_text): Commit memory when finished.
(_cpp_expansions_different_trad): New.
2002-06-10 Tim Josling <>
* gengtype.c (unnamed enum containing BASE_FILE_*): Add languages
(lang_names): Add treelang and cobol.
(get_file_basename): Add code to support treelang and cobol as
4th and 5th users of c-common.c.
2002-06-09 Geoffrey Keating <>
* (install-driver): Install driver as
* gcc.c (spec_version): Make const.
(process_command): Handle -V and -b by using exec.
* doc/invoke.texi (Target Options): Restore -V option,
update docs for -b option.
2002-06-10 Tim Josling <>
* (remaining_languages_check):
Added check that all languages specified were found.
Exit if not found. Previous behavior was silent failure.
* configure: Regenerated.
2002-06-10 Tim Josling <>
First steps to making treelang documentation compliant, based on
instructions in sourcebuild.texi. Also add to gcc.c list of
default languages.
* doc/contrib.texi: Add self as contributor of treelang.
* doc/frontends.texi: Add mention of treelang.
* doc/invoke.texi (Overall Options): Add mention of treelang.
* doc/standards.texi: Add mention of treelang.
2002-06-09 Hans-Peter Nilsson <>
* config/cris/cris.c: Include ggc.h
2002-06-09 Neil Booth <>
* cpphash.h (_cpp_push_text_context): Update.
(_cpp_arguments_ok): New.
* cppmacro.c (_cpp_arguments_ok): New, split out from...
(_cpp_push_text_context): Change inputs.
* cpptrad.c (struct fun_macro, maybe_start_funlike, save_argument,
replace_args_and_push): New.
(lex_identifier, _cpp_lex_identifier_trad, scan_parameters):
Don't use IS macros directly.
(scan_out_logical_line): Handle function-like macro argument
(push_replacement_text): Update.
(replacement_length): Remove.
(_cpp_create_trad_definition): Don't skip whitespace before
checking for '('.
2002-06-09 Marek Michalkiewicz <>
* config/avr/avr.c (avr_mcu_types): Update for new devices.
* config/avr/avr.h (TARGET_SWITCHES, AVR_MEGA): Add -mshort-calls.
(LINK_SPEC, CRT_BINUTILS_SPECS): Update for new devices.
* config/avr/ ("type" and "length" attributes): New type
"xcall", length 1 or 2 if AVR_MEGA. Use in all patterns that
output a single "call" or "rcall" insn depending on device size.
* config/avr/t-avr (MULTILIB_MATCHES): Update for new devices.
2002-06-09 David Edelsohn <>
* config/rs6000/{aix43.h,aix5.1} (ASM_CPU_SPEC): Add power3
synonym for 630. Add power4. Remove embedded processors. Use -m604
assembler option.
(CPP_CPU_SPEC): Add power3 and power4.
(PROCESSOR_DEFAULT): Change to 604e.
* config/rs6000/rs6000.h (ASM_CPU_SPEC): Similar additions.
(CPP_CPU_SPEC): Similar additions.
(enum process_type): Add POWER4.
(CPP_CPU_SPEC): Similar additions.
* config/rs6000/linux64.h (PROCESSOR_DEFAULT): Define.
* config/rs6000/rs6000.c (rs6000_override_options): Add power4.
(rs6000_adjust_cost): Add 603, 604, 604e, 620, 630, Power4 to
branch adjustment.
(rs6000_issue_rate): Add Power4.
* config/rs6000/ (cpu attr): Add power4.
(iu compare): Remove 604, 604e, 620, 630.
Add basic Power4 scheduling information.
(mfcr/mtcrf): Change type attribute to cr_logical.
2002-06-08 Kaveh R. Ghazi <>
* gengtype.h (error_at_line): Use PARAMS, not VPARAMS. Add
* gengtype-lex.l: Fix format specifier warning.
* genautomata.c: Don't include ctype.h or limits.h. Use ISSPACE,
not isspace.
* gengtype-lex.l: Don't include ctype.h and use ISSPACE/ISIDNUM in
lieu of isspace/IDchar.
* gengtype.c: Likewise for ctype.h and ISALNUM vs isalnum.
* read-rtl.c: Likewise for ctype.h. Don't define ISDIGIT or
2002-06-08 Zack Weinberg <>
* (LIBCPP_OBJS): Take out version.o.
* cpphash.h (cpp_reader): Take out print_version member.
* cppinit.c: (cpp_handle_option): Don't do anything with
-version. Just set help_only for --version, --target-help.
Just set verbose option for -v.
(cpp_post_options): Don't print a version string.
2002-06-08 Marek Michalkiewicz <>
* config/avr/avr.c (TARGET_SECTION_TYPE_FLAGS): New.
(avr_section_type_flags): New, handle .noinit* sections.
2002-06-08 Jason Thorpe <>
* config/sh/netbsd-elf.h (SUBTARGET_EXTRA_SPECS): Define
and include netbsd_entry_point.
2002-06-08 Jason Thorpe <>
* config/sh/sh.h (SUBTARGET_EXTRA_SPECS): Define empty
if not already defined.
2002-06-08 Marek Michalkiewicz <>
* config/avr/avr.c (avr_regs_to_save): No need to save any registers
in a noreturn function.
(avr_output_function_prologue, avr_output_function_epilogue):
Correct function size calculation. Do not crash on empty function.
(avr_output_function_epilogue): No need for epilogue after a BARRIER.
2002-06-08 Jason Thorpe <>
* config/mips/netbsd.h (SUBTARGET_EXTRA_SPECS): Add
netbsd_link_spec and netbsd_entry_point.
(LINK_SPEC): Use %(netbsd_link_spec).
2002-06-08 Jason Thorpe <>
* config/sparc/netbsd-elf.h (LINK_ARCH32_SPEC): Only specify
linker emulation.
(LINK_ARCH64_SPEC): Likewise.
(SUBTARGET_EXTRA_SPECS): Add netbsd_link_spec and netbsd_entry_point.
2002-06-08 Marc Espie <>
* lists.c (free_list): Fix typo in comment.
2002-06-08 Andreas Jaeger <>
* lcm.c (optimize_mode_switching): Add unused attribute for
* sched-deps.c (sched_analyze): Remove unused variable.
2002-06-08 Gabriel Dos Reis <>
* diagnostic.def: Don't capitalize diagnostict descriptors.
2002-06-08 Jason Thorpe <>
* config/m68k/netbsd-elf.h (EXTRA_SPECS): Add netbsd_entry_point.
2002-06-08 Jason Thorpe <>
* config/i386/netbsd-elf.h (LINK_SPEC): Define as
(SUBTARGET_EXTRA_SPECS): Add netbsd_entry_point.
* config/i386/netbsd64.h (LINK_SPEC): Use %(netbsd_link_spec).
(SUBTARGET_EXTRA_SPECS): Add netbsd_link_spec and
2002-06-08 Jason Thorpe <>
* config/alpha/netbsd.h (SUBTARGET_EXTRA_SPECS): Add
netbsd_link_spec and netbsd_entry_point.
(LINK_SPEC): Use %(netbsd_link_spec).
2002-06-08 Jason Thorpe <>
* config/netbsd-elf.h (LINK_SPEC): Rename to...
(NETBSD_LINK_SPEC_ELF): ...this. Use %(netbsd_entry_point)
to specify program entry point.
2002-06-07 Jeff Law <
* emit-rtl.c (init_emit): Add hard registers to regno_reg_rtx.
* combine.c (move_deaths): Use regno_reg_rtx for hard regs rather
than creating a new register.
(distribute_notes): Likewise.
* df.c (df_reg_use_gen): Likewise.
(df_reg_clobber_gen): Likewise.
(df_ref_record): Likewise.
* expr.c (use_regs): Likewise.
* flow.c (propagate_one_insn): Likewise.
(mark_set_1): Likewise.
(mark_used_reg): Likewise.
* reload.c (emit_reload_insns): Likewise.
2002-06-07 Roger Sayle <>
* simplify-rtx.c (simplify_gen_relational): Simplify RTL of the form
(ne (comp x y) 0) into (comp x y) where comp is a comparison code.
Simplify (eq (comp x y) 0) into (revcomp x y) if the sense of the
comparison code comp can be reversed.
2002-06-07 Roger Sayle <>
* fold-const.c (fold) [EQ_EXPR]: Place both integer and real
constants last in comparisons. Optimize (x+1.0)>0.0 into the
equivalent x > -1.0 when -ffast-math.
2002-06-07 Jason Thorpe <>
* config.gcc (mips*-*-netbsd*): Add mips/t-netbsd to ${tmake_file}.
* config/mips/t-netbsd: New file.
2002-06-07 Zack Weinberg <>
* cppinit.c (COMMAND_LINE_OPTIONS): Give all relevant -W
options their own entries.
(parse_option): Clarify comment.
(cpp_handle_option): Remove 'ignore' parameter and OPT_W
special case. Replace if/strcmp chain for -W options with
use of new OPT_* entries for them.
(cpp_handle_options): Update to match.
* cpplib.h: Remove last parameter to cpp_handle_option from prototype.
* c-decl.c: Update call to cpp_handle_option.
2002-06-07 Akim Demaille <>
* gengtype-yacc.y (optionseqopt): Add the ending `;' to the action.
Whitespace changes.
2002-06-07 Jeffrey Law <>
* sched-deps.c (free_deps): Avoid calling free_INSN_LIST_list
on empty lists.
2002-06-07 H.J. Lu (
* Add --enable-__cxa_atexit.
* configure: Regenerated.
* Likewise.
* defaults.h (DEFAULT_USE_CXA_ATEXIT): New. Defined to be 0 if
not defined.
2002-06-07 Gabriel Dos Reis <>
* diagnostic.c (diagnostic_build_prefix): Fix initialization.
2002-06-07 Jason Thorpe <>
* config/mips/netbsd.h (CACHE_FLUSH_FUNC): Define.
2002-06-07 Jason Merrill <>
* cppexp.c (num_equality_op): Use a temporary variable to work
around gcc 3.0.4 bug.
2002-06-07 Gabriel Dos Reis <>
* diagnostic.c (diagnostic_build_prefix): Tidy.
2002-06-07 Neil Booth <>
* cpptrad.c (struct block, BLOCK_HEADER_LEN, BLOCK_LEN,
scan_parameters, save_replacement_text, replacement_length): New.
(scan_out_logical_line): Take a macro and save parameters if
(_cpp_logical_line_trad): Update.
(_cpp_create_trad_definition): Update to handle function-like
* cpplex.c (new_buff): Update.
(struct dummy, DEFAULT_ALIGNMENT, CPP_ALIGN): Move...
* cpphash.h:
(CPP_ALIGN2, _cpp_save_parameter): New.
* cppmacro.c (save_parameter): Rename, export.
(parse_params): Update.
2002-06-07 Andreas Jaeger <>
* config/mmix/mmix.c: Remove extra broken prototype for
2002-06-06 Geoffrey Keating <>
* gengtype.c: Add comments before all the routines.
2002-06-07 Jason Thorpe <>
* config.gcc (sh5*-*-netbsd*): Remove sh/t-netbsd-sh5-32
from and add t-sh64 to ${tmake_file}.
(sh64*-*-netbsd*): Add t-sh64 to ${tmake_file}.
* config/sh/t-netbsd-sh5 (LIB1ASMFUNCS): Remove.
* config/sh/t-netbsd-sh5-32: Remove.
* config/sh/t-netbsd-sh5-64 (MULTILIB_OPTIONS): Use
Thu Jun 6 23:14:46 CEST 2002 Jan Hubicka <>
* (and promoting splitters): Disable QI to SImode promoting
when doing so changes immediate to be 32bit.
* rtl.h (emit_*_scope): Declare.
* emit-rtl.c (emit_*_scope): New global functions.
(try_split): Copy scope.
* ifcvt.c (noce_try_store_flag, noce_try_store_flag_constants,
noce_try_flag_inc, noce_try_store_flag_mask, noce_try_cmove,
noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
noce_process_if_block, find_cond_trap): Copy scopes.
* recog.c (peephole2_optimize): likewise.
2002-06-06 Jeffrey Law <>
* h8300.h (OK_FOR_U): Fix thinko exposed by flag checking.
Thu Jun 6 21:06:25 2002 J"orn Rennecke <>
* gengtype-lex.l (INITIAL): New rule for "'"("\\".|[^\\])"'".
2002-06-06 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
($(docdir)/ New target.
(info): Depend on it.
(gccinstall.dvi): New target.
(dvi): Depend on it.
* doc/.cvsignore: Ignore new info files.
* doc/install.texi (@setfilename): Reflect new info filename.
Thu Jun 6 15:57:23 2002 J"orn Rennecke <>
* sh.c (machine_dependent_reorg): Don't set RTX_UNCHANGING_P
on an UNSPEC.
Thu Jun 6 07:17:43 2002 Nicola Pero <>
PR objc/6834
* objc/objc-lang.c (LANG_HOOKS_GET_ALIAS_SET): Define to be
(LANG_HOOKS_SAFE_FROM_P): Define to be c_safe_from_p.
2002-06-06 John David Anglin <>
* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): New
* rtl.h (get_first_nonnote_insn, get_last_nonnote_insn): Declare.
* avr/avr.c (avr_output_function_epilogue): Use above to determine
function size.
* pa/pa.c (pa_output_function_prologue): Likewise.
2002-06-05 David S. Miller <>
* integrate.c (subst_constants): Handle 'B' RTL format.
2002-06-05 Eric Christopher <>
* varasm.c (make_decl_rtl): Fix comment for removed
2002-06-05 Eric Christopher <>
* Remove missed halfpic bits.
2002-06-05 Eric Christopher <>
* toplev.c: Remove half-pic.
* config/mips/mips.c: Ditto.
* config/mips/mips.h: Ditto. Remove unused defines.
* config/mips/openbsd.h: Update comment to reflect above.
* config/mips/ Remove half-pic constraints.
* halfpic.h: Delete.
* halfpic.c: Ditto.
2002-06-05 Jeffrey Law <>
* pa.h (EXTRA_CONSTRAINT, T case): Further refine so that it
rejects (mem (lo_sum (reg) (unspec))), but will allow
(mem (lo_sum (reg) (symbol_ref)) for PA2.0.
2002-06-05 Neil Booth <>
* cpphash.h (_cpp_create_definition): Update prototype.
(_cpp_push_text_context, _cpp_create_trad_definition): New.
( cpp_lex_identifier_trad): New.
(_cpp_set_trad_context): New.
* cppinit.c (cpp_finish_options): Don't conditionalize builtins.
* cpplib.c (SEEN_EOL): Update.
(lex_macro_node): Update for -traditional.
(cpp_push_buffer, _cpp_pop_buffer): Similarly.
* cppmacro.c (_cpp_create_definition): Split into
create_iso_definition() and _cpp_create_trad_definition().
(warn_of_redefinition): Update prototype; handle traditional
(_cpp_push_text_context): New.
* cpptrad.c (skip_whitespace, push_replacement_text): New.
(lex_identifier): Call ht_lookup with correct start.
(_cpp_lex_identifier_tradm _cpp_create_trad_definition,
_cpp_set_trad_context): New.
(scan_out_logical_line): Update to handle changing contexts.
Wed Jun 5 20:42:31 2002 J"orn Rennecke <>
* config.gcc (sh-*-elf*, sh64*-*-elf*): Unify.
(shl*-*-elf*): Add.
* config/sh/t-be (MULTILIB_ENDIAN): Set.
* config/sh/t-le (MULTILIB_ENDIAN): Likewise.
* t-sh (MULTILIB_ENDIAN): Set.
* t-sh64 (MULTILIB_OPTIONS): Likewise.
2002-06-05 Gabriel Dos Reis <>
* toplev.h (report_error_function): Remove.
* diagnostic.h (location_t): New datatype.
(text_info): Likewise.
(diagnostic_info): Likewise.
(output_prefix): New macro.
(diagnostic_last_function_changed): Likewise.
(diagnostic_set_last_function): Likewise.
(diagnostic_last_module_changed): Likewise.
(diagnostic_set_last_module): Likewise.
(report_diagnostic): Now macro.
(diagnostic_set_info): Declare.
* diagnostic.c (report_problematic_module): Rename to
(set_diagnostic_context): Remove.
(count_error): Rename to diagnostic_error_count.
(error_function_changed): Remove.
(record_last_error_function): Likewise.
(error_module_changed): Likewise.
(record_last_error_module): Likewise.
(context_as_prefix): Rename to diagnostic_build_prefix.
(flush_diagnostic_buffer): Rename to diagnostic_flush_buffer.
(diagnostic_set_info): New function.
* objc/objc-act.c: #include diagnostic.h
(error_with_ivar): Adjust call to count_error.
(warn_with_method): Likewise.
* objc/ (objc-act.o): Depend on diagnostic.h
2002-06-05 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_build_va_list): Use
lang_hooks.types.make_type instead of make_node; set up
__va_list_tag type decl.
(xtensa_builtin_saveregs): Remove broken use of
RTX_UNCHANGING_P and unnecessary use of MEM_IN_STRUCT_P
for saved registers; add varargs alias set.
2002-06-05 Neil Booth <>
* alpha/gnu.h: Undef TARGET_OS_CPP_BUILTINS.
* i386/beos-elf.h: Use TARGET_OS_CPP_BUILTINS rather than
i386/freebsd-aout.h, i386/gas.h, i386/gnu.h, i386/linux-aout.h,
i386/linux.h, i386/moss.h, i386/xm-vsta.h: Similarly.
Wed Jun 5 15:20:58 CEST 2002 Jan Hubicka <>
* reg-stack.c (reg_to_stack): Do not call find_basic_blocks.
2002-06-05 Alan Modra <>
* config/rs6000/linux64.h (ASM_OUTPUT_SOURCE_LINE): Define.
2002-06-04 Zack Weinberg <>
* gengtype-yacc.y: Make sure all rules end with a semicolon.
2002-06-04 Bob Wilson <>
* config/xtensa/xtensa.c (xtensa_init_machine_status): Fix
typo in function prototype and include "ggc.h" header.
2002-06-04 Richard Henderson <>
* config/alpha/alpha.c (mode_mask_operand): Simplify without ifdefs.
(print_operand) ['U']: Likewise.
(alpha_expand_unaligned_store): Correct constants for 32-bit cross.
(alpha_expand_unaligned_store_words): Likewise.
(alpha_expand_builtin_vector_binop): Fix typo.
(enum alpha_builtin, code_for_builtin): Add remaining ext, ins, msk,
umulh, and cix insns.
(one_arg_builtins): Add cix builtins.
(two_arg_builtins): Add ext, ins, msk, umulh builtins.
(alpha_expand_builtin): Fix typo in arity.
* config/alpha/ (UNSPEC_CTLZ, UNSPEC_CTPOP): New.
(builtin_extbl, builtin_extwl, builtin_extll, builtin_extwh,
builtin_extlh, builtin_insbl, builtin_inswl, builtin_insll,
builtin_insql, builtin_inswh, builtin_inslh, builtin_insqh,
builtin_mskbl, builtin_mskwl, builtin_mskll, builtin_mskql,
builtin_mskwh, builtin_msklh, builtin_mskqh, builtin_cttz,
builtin_ctlz, builtin_ctpop): New.
* doc/extend.texi (Alpha Built-in Functions): Update.
2002-06-04 Geoffrey Keating <>
* gengtype.c (write_gc_root): Don't unnecessarily prevent
global variable-length arrays being roots.
* config.gcc (powerpc-*-darwin*): Set config_gtfiles.
* (config_gtfiles): New variable.
(all_gtfiles): Initialize from config_gtfiles.
* configure: Regenerate.
2002-06-04 Neil Booth <>
* beos-elf.h, cygwin.h, djgpp.h, gas.h, gnu.h, i386-interix.h,
i386-interix3.h, i386elf.h, linux-aout.h, linux.h, linux64.h,
mingw32.h, netbsd-elf.h, netbsd.h, netbsd64.h, rtemself.h,
sco5.h, sol2.h, sysv3.h, sysv4.h, sysv5.h, uwin.h, vxi386.h,
win32.h (CPP_SPEC): Remove cpp_cpu.
2002-06-04 Janis Johnson <>
* config/ia64/ia64.c (gen_thread_pointer): Fix variable name.
2002-06-04 Jeff Law <
David Edelsohn <>
Michael Matz <>
* sched-int.h (struct deps): New field libcall_block_tail_insn.
* sched_deps.c (init_deps): Initialize libcall_block_tail_insn.
* sched_deps.c (sched_analyze_insn): If libcall_block_tail_insn
is set, then mark the current insn as being part of a libcall
scheduling group.
(sched_analyze): Set and clear libcall_block_tail_insn appropriately.
* haifa-sched.c (schedule_block): Do not count USE or CLOBBER
insns against the issue rate.
Tue Jun 4 19:29:42 CEST 2002 Jan Hubicka <>
* cfglayout.c (duplicate_insn_chain): Kill NOTE_INSN_RANGE notes.
* final.c (final_scan_insn): Likewise.
* ggc-common.c (ggc_mark_rtx_children_1): Likewise; use
* haifa-sched.c (unlink_other_notes): Likeewise.
(reemit_notes): Likewise.
* print-rtl.c (print_rtx): Likewise.
* sched-deps (sched-analyze): Likewise.
* rtl.c (note_insn_name): Likewise.
(enum insn_note): Kill NOTE_INSN_RANGE_*, NOTE_INSN_LIVE.
(RANGE_*): Kill.
2002-06-04 Jason Thorpe <>
* varasm.c (mark_constants): Handle RTX format 'B'.
2002-06-04 Neil Booth <>
* cpphash.h (FIRST, LAST, CUR, RLIMIT): New.
(struct cpp_context): Add traditional fields.
* cppmacro.c (paste_all_tokens, push_ptoken_context,
push_token_context, cpp_get_token, _cpp_backup_tokens): Update.
* cpptrad.c (skip_comment, lex_identifier,
_cpp_read_logical_line_trad, scan_out_logical_line): Update.
2002-06-04 Kazu Hirata <>
* gbl-ctors.h: Fix formatting.
* gcc.c: Likewise.
* gccspec.c: Likewise.
* gcov.c: Likewise.
* gcov-io.h: Likewise.
* gcse.c: Likewise.
* ggc-common.c: Likewise.
* ggc.h: Likewise.
* ggc-page.c: Likewise.
* ggc-simple.c: Likewise.
* global.c: Likewise.
* graph.h: Likewise.
* gthr-dce.h: Likewise.
* gthr.h: Likewise.
* gthr-posix.h: Likewise.
* gthr-rtems.h: Likewise.
* gthr-solaris.h: Likewise.
* gthr-win32.h: Likewise.
2002-06-03 Geoffrey Keating <>
Merge from pch-branch:
* gengtype.h (UNION_OR_STRUCT_P): New macro.
* gengtype.c (write_gc_structure_fields): Use it.
(write_gc_root): Use it here too.
* gengtype.c (write_gc_structure_fields): Assume that lengths
of typenames fit into an 'int'; don't pass a size_t to "%d" in
(write_gc_marker_routine_for_structure): Likewise.
(write_gc_types): Likewise.
(write_gc_root): Likewise.
* varray.h (VARRAY_CLEAR): New.
(varray_clear): Prototype.
* varray.c (varray_clear): New.
* cselib.c (reg_values_old): New.
(used_regs_old): New.
(cselib_init): Use cached varrays if available to avoid
generating large amounts of garbage.
(cselib_finish): Don't throw away old varrays.
* final.c (insn_addresses_): Move out of ifdef.
* varray.c (uses_ggc): Make more varray kinds GCable.
* varray.h (union varray_data_tag): Let gengtype see
fields 'generic' and 'te'.
* reg-stack.c: Include gt-reg-stack.h, ggc.h.
(stack_regs_mentioned_data): Move out of ifdef; mark with gengtype.
(reg_to_stack): Don't call VARRAY_FREE.
* insn-addr.h (INSN_ADDRESSES_FREE): Don't use VARRAY_FREE.
(insn_addresses_): Use gengtype to mark.
* gengtype.c (write_gc_structure_fields): Handle arrays of generic
pointers; handle generic pointers in unused union fields.
(get_output_file_with_visibility): Include cselib.h,
insn-addr.h in gtype-desc.c.
* function.c (prologue): Use gengtype to mark.
(epilogue): Likewise.
(sibcall_epilogue): Likewise.
* dependence.c: Include gt-dependence.h, ggc.h.
(struct def_use): Use gengtype to mark.
(struct loop): Likewise.
(struct induction): Likewise.
(struct dependence): Likewise.
(def_use_chain): Likewise.
(dep_chain): Likewise.
(loop_chain): Likewise.
(induction_chain): Likewise.
(init_dependence_analysis): Don't free anything, just clear pointers.
(build_def_use): Use GGC to allocate def_use.
(add_loop): Use GGC to allocate loop.
(find_induction_variable): Use GGC to allocate induction.
(check_node_dependence): Use GGC to allocate induction, dependence.
(dump_node_dependence): Don't free varrays.
(end_dependence_analysis): Likewise.
* cselib.h (struct cselib_val_struct): Use gengtype to mark.
(struct elt_loc_list): Likewise.
(struct elt_list): Likewise.
* cselib.c: Don't include obstack.h.
(hash_table): Use gengtype to mark.
(reg_values): Use gengtype to mark.
(used_regs): Use gengtype to mark.
(cselib_obstack): Delete.
(cselib_startobj): Delete.
(empty_vals): Mark as deletable.
(empty_elt_lists): Mark as deletable.
(empty_elt_loc_lists): Mark as deletable.
(new_elt_list): Use GGC to allocate struct elt_list.
(new_elt_loc_list): Use GGC to allocate struct elt_loc_list.
(clear_table): Don't delete obstack; don't unnecessarily clear
deletable variables.
(new_cselib_val): Use GGC to allocate struct cselib_val.
(cselib_init): Don't set up obstacks. Use GGC to allocate
hash table.
(cselib_finish): Just clear variables, don't free anything.
* (cselib.o): Remove dependency on $(OBSTACK_H).
(reg-stack.o): Add dependency on gt-reg-stack.h, $(GGC_H).
(dependence.o): Add dependency on gt-dependence.h, $(GGC_H).
(GTFILES): Add insn-addr.h, cselib.h, dependence.c, reg-stack.c.
(gt-reg-stack.h): New rule.
(gt-dependence.h): New rule.
(gtype-desc.o): Add cselib.h, insn-addr.h.
* varray.c: Use only necessary headers.
(element_size): New.
(uses_ggc): New.
(varray_init): Take type, not size. Use GGC if appropriate.
(varray_grow): Update for change to struct varray_head_tag.
Use GGC if appropriate.
* varray.h (struct const_equiv_data): Use gengtype.
(enum varray_data_enum): New.
(union varray_data_tag): Use gengtype.
(struct varray_head_tag): Use gengtype. Replace size field with
enum varray_data_enum.
(varray_init): Update prototype.
(VARRAY_*_INIT): Update for change to varray_init.
* tree.h: Update for change to length specifier.
* tree-inline.c (optimize_inline_calls): Don't use VARRAY_FREE.
(clone_body): Likewise.
* ssa.h (ssa_definition): Use gengtype to mark.
* ssa.c (convert_from_ssa): Don't use VARRAY_FREE.
* ssa-dce.c (ssa_eliminate_dead_code): Don't use VARRAY_FREE.
* rtl.h (struct rtvec_def): Update for change to length specifier.
* integrate.c (expand_inline_function): Don't use VARRAY_FREE.
(struct initial_value_struct): Update for change to length specifier.
* ggc.h (ggc_add_rtx_varray_root): Delete prototype.
(ggc_add_tree_varray_root): Delete prototype.
(ggc_mark_rtx_varray): Delete prototype.
(ggc_mark_tree_varray): Delete prototype.
* ggc-common.c (ggc_add_rtx_varray_root): Delete.
(ggc_add_tree_varray_root): Delete.
(ggc_mark_rtx_varray): Delete.
(ggc_mark_tree_varray): Delete.
(ggc_mark_rtx_varray_ptr): Delete.
(ggc_mark_tree_varray_ptr): Delete.
* gengtype.h (enum typekind): Remove TYPE_VARRAY.
(create_varray): Delete prototype.
* gengtype.c (varrays): Delete.
(create_varray): Delete.
(adjust_field_type): Detect array of string pointers.
(process_gc_options): Remove code to handle varray_type option.
(set_gc_used_type): Remove TYPE_VARRAY case.
(output_escaped_param): New.
(write_gc_structure_fields): Use output_escaped_param on all
parameters. Handle 'skip' with 'use_param' option. Handle
arrays of strings. Remove TYPE_VARRAY handling.
(write_gc_roots): Use boolean to detect 'length' option.
* gengtype-yacc.y (VARRAY_TYPE): Delete token.
(struct_fields): Call adjust_field_type on array fields.
(type): Remove VARRAY_TYPE case.
(type_option): Likewise.
* gengtype-lex.l: Don't consider varray_type a keyword.
* function.h: Update for change to length specifier.
(free_eh_status): Delete prototype.
* function.c (free_after_compilation): Don't call free_eh_status.
(reorder_blocks): Don't use VARRAY_FREE.
* except.c (struct eh_status): Update for change to length specifier.
remove varray_type specifier.
(free_eh_status): Delete.
* dwarf2out.c: Include gt-dwarf2out.h.
(used_rtx_varray): Use gengtype to mark, move
outside ifdefs.
(incomplete_types): Likewise.
(decl_scope_table): Likewise.
(dwarf2out_init): Don't call ggc_add_tree_varray_root.
* cfglayout.c (scope_to_insns_finalize): Don't use VARRAY_FREE.
* c-tree.h (struct lang_type): Update for change to length specifier.
* (yylexstring): Don't use VARRAY_FREE.
* c-objc-common.c: Include gt-c-objc-common.h.
(deferred_fns): Mark for gengtype.
(c_objc_common_init): Don't call ggc_add_tree_varray_root.
(expand_deferred_fns): Just set deferred_fns to 0 to free it.
* (c-objc-common.o): Add gt-c-objc-common.h.
(gtype-desc.o): Update dependencies.
(dwarf2out.o): Add gt-dwarf2out.h.
(varray.o): Update dependencies.
(GTFILES): Add varray.h, ssa.h, dwarf2out.c, c-objc-common.c.
(gt-c-objc-common.h): New rule.
(gt-dwarf2out.h): New rule.
* objc/objc-act.c (build_objc_string_object): Don't use VARRAY_FREE.
* doc/gty.texi (GTY Options): Correct spelling.
(GGC Roots): Likewise.
($(docdir)/ Use new macros.
($(docdir)/ Likewise.
($(docdir)/ Likewise.
($(docdir)/ Likewise.
(cpp.dvi): Likewise.
(gcc.dvi): Likewise.
(gccint.dvi): Likewise.
(cppinternals.dvi): Likewise.
* ($(docdir)/ Depend on gty.texi.
* doc/gccint.texi (Top): Include gty.texi.
* doc/gty.texi: New file.
* bitmap.c: Include ggc.h, gt-bitmap.h.
(bitmap_ggc_free): New.
(bitmap_elem_to_freelist): New.
(bitmap_element_free): Use bitmap_elem_to_freelist.
(bitmap_element_allocate): Allow use of GGC.
(bitmap_clear): Use bitmap_elem_to_freelist.
(bitmap_copy): Update for change to bitmap_element_allocate.
(bitmap_set_bit): Likewise.
(bitmap_operation): Update for changes elsewhere.
(bitmap_initialize): Allow to create bitmaps that will use GGC.
* bitmap.h (struct bitmap_element_def): Use gengtype.
(struct bitmap_head_def): Likewise. Also add 'using_obstack' field.
(bitmap_initialize): Add extra parameter.
(BITMAP_OBSTACK_ALLOC): Update for change to bitmap_initialize.
(BITMAP_XMALLOC): Update for change to bitmap_initialize.
* (gtype-desc.o): Add bitmap.h.
(bitmap.o): Add gt-bitmap.h, $(GGC_H).
(GTFILES): Add bitmap.c.
(gt-bitmap.h): New rule.
($(HOST_PREFIX_1)bitmap.o): Add gt-bitmap.h.
* basic-block.h: Update for changes to bitmap_initialize.
* except.c (exception_handler_label_map): Move into...
(struct eh_status): Here.
(struct eh_region): Make 'aka' GCable.
(free_eh_status): Don't need to specially handle
(add_ehl_entry): Update for changes to exception_handler_label_map.
(find_exception_handler_labels): Likewise.
(remove_exception_handler_label): Likewise.
(maybe_remove_eh_handler): Likewise.
(for_each_eh_label): Likewise.
(remove_eh_handler): Allocate 'aka' using GGC.
* gengtype.c (get_output_file_with_visibility): Add bitmap.h
to list of includes.
* gengtype.c (write_gc_marker_routine_for_structure): Name
the routines 'gt_ggc_mx_*' instead of 'gt_ggc_m_*'.
(write_gc_types): Arrange for the tests with NULL to be inlined.
(write_gc_roots): Update uses of procedure pointers.
* ggc-common.c (gt_ggc_mx_rtx_def): Rename from gt_ggc_m_rtx_def.
* (explow.o): Add dependency on gt-explow.h.
(sdbout.o): Add dependency on gt-sdbout.h.
* emit-rtl.c (const_int_htab): Use gengtype to clear unused entries.
(mem_attrs_htab): Likewise.
(init_emit_once): Don't call ggc_add_deletable_htab.
* fold-const.c (size_htab): Use gengtype to clear unused entries.
(size_int_type_wide): Don't call ggc_add_deletable_htab.
* gengtype.c (finish_root_table): Add LASTNAME and TNAME
parameters, use them, change callers.
(write_gc_root): Add IF_MARKED parameter, use it, change callers.
(write_gc_roots): Handle 'if_marked' option.
(main): Don't need to call set_gc_used_type any more.
* ggc.h (ggc_htab_marked_p): Delete.
(ggc_htab_mark): Delete.
(struct ggc_cache_tab): New.
(gt_ggc_cache_rtab): New declaration.
* ggc-common.c (struct d_htab_root): Delete.
(d_htab_roots): Delete.
(ggc_add_deletable_htab): Delete.
(ggc_htab_delete): Handle new htab-deleting mechanism.
(ggc_mark_roots): Use new htab-deleting mechanism.
* tree.c (type_hash_table): Use gengtype to clear unused entries.
Make static.
(init_obstacks): Don't call ggc_add_deletable_htab.
* objc/objc-act.h (struct hashed_attribute): Use gengtype.
(struct hashed_entry): Likewise.
(nst_method_hash_list): Likewise.
(cls_method_hash_list): Likewise.
* objc/objc-act.c (hash_init): Use ggc to allocate
nst_method_hash_list, cls_method_hash_list.
(hash_enter): Use ggc to allocate; allocate one entry at a time.
(hash_add_attr): Likewise.
(ggc_mark_hash_table): Delete.
(objc_act_parse_init): Delete.
(objc_init): Delete reference to objc_act_parse_init.
* tlink.c: Replace hash.h with hashtab.h. Explicitly include
obstack.h. Replace references to 'struct hash_table' with htab_t.
(struct symbol_hash_entry): Replace hash header with key field.
(struct file_hash_entry): Replace hash header with key field.
(struct demangled_hash_entry): Replace hash header with key field.
(hash_string_eq): New.
(hash_string_hash): New.
(symbol_hash_newfunc): Delete.
(symbol_hash_lookup): Modify to use htab_t.
(file_hash_newfunc): Delete.
(file_hash_lookup): Modify to use htab_t.
(demangled_hash_newfunc): Delete.
(demangled_hash_lookup): Modify to use htab_t.
(tlink_init): Modify to use htab_t.
* hash.h: Delete.
* hash.c: Delete.
* ggc.h: Delete forward structure declarations.
Delete prototypes for deleted functions.
* ggc-common.c: Don't include hash.h.
(ggc_add_tree_hash_table_root): Delete.
(ggc_mark_tree_hash_table_entry): Delete.
(ggc_mark_tree_hash_table): Delete.
(ggc_mark_tree_hash_table_ptr): Delete.
* gengtype.c (write_gc_structure_fields): Allow param_is option.
(write_gc_marker_routine_for_structure): Use visibility of
the parameter if there is one.
* function.c: Replace hash.h with hashtab.h. Replace references
to 'struct hash_table *' with htab_t.
(struct insns_for_mem_entry): Include a plain key.
(fixup_var_refs_insns_with_hash): Update to use htab_t.
(insns_for_mem_newfunc): Delete.
(insns_for_mem_hash): Update to use htab_t.
(insns_for_mem_comp): Likewise.
(insns_for_mem_walk): Likewise.
* c-lang.c: Include ggc.h.
* (OBJS): Remove hash.o.
(c-lang.o): Add GGC_H.
(COLLECT2_OBJS): Remove hash.o.
(tlink.o): Remove hash.h, add HASHTAB_H and OBSTACK_H.
(ggc-common.o): Remove hash.h.
(function.o): Remove hash.h, add HASHTAB_H.
(genautomata.o): Remove hash.h, add HASHTAB_H.
* varasm.c (mark_const_str_htab_1): Delete.
(mark_const_str_htab): Delete.
(const_str_htab_del): Delete.
(const_str_htab): Use gengtype to mark.
(init_varasm_once): Use gengtype to mark hashtables. Use GC to
allocate them.
* tree.c (mark_tree_hashtable_entry): Delete.
(mark_tree_hashtable): Delete.
* tree.h (mark_tree_hashtable): Delete prototype.
* ggc.h (ggc_test_and_set_mark): Treat (void *)1 like NULL.
(ggc_mark): Likewise.
(ggc_calloc): New.
(htab_create_ggc): New.
* ggc-common.c (ggc_calloc): New.
* gengtype.h (enum typekind): Add TYPE_PARAM_STRUCT.
(struct type): Add param_struct structure.
* gengtype.c (param_structs): New.
(adjust_field_type): Handle param_is option.
(set_gc_used_type): Handle TYPE_PARAM_STRUCT.
(get_output_file_with_visibility): Include hashtab.h in gtype-desc.c.
(write_gc_structure_fields): Add new PARAM parameter. Update
callers. Handle use_param option. Handle TYPE_PARAM_STRUCT.
(write_gc_marker_routine_for_structure): Add new PARAM parameter.
Use it to generate function name. Update callers.
(write_gc_types): Add new PARAM_STRUCTS parameter. Update callers.
Process them.
(write_gc_roots): Handle TYPE_PARAM_STRUCT. Allow param_is
(main): Define PTR as pointer-to-scalar. Don't specially
mark deferred_string or ehl_map_entry.
* gengtype-yacc.y (PARAM_IS): Add new token.
(externstatic): Use adjust_field_type.
(type_option): Add PARAM_IS.
* gengtype-lex.l: Add rule for typedef of function pointers.
Add rule for PARAM_IS.
(IWORD): Add size_t.
* except.c (exception_handler_label_map): Use gengtype to mark.
(type_to_runtime_map): Likewise.
(mark_ehl_map_entry): Delete.
(mark_ehl_map): Delete.
(init_eh): Use gengtype for roots; use GC to allocate hash tables.
(t2r_mark_1): Delete.
(t2r_mark): Delete.
* (gtype-desc.o): Correct dependencies.
(GTFILES): Add hashtab.h.
(genautomata.o): Actually uses hashtab.h.
* (stringpool.o): Add $(GGC_H).
(dwarf2asm.o): Likewise.
(GTFILES): Add hashtable.h.
* c-common.h (struct c_common_identifier): Use gengtype.
* c-decl.h (c_mark_tree): Delete.
* c-lang.c (LANG_HOOKS_MARK_TREE): Delete.
* c-tree.h (struct lang_identifier): Use gengtype.
(union lang_tree_node): New.
(c_mark_tree): Delete prototype.
* dwarf2out.c [!DWARF2_DEBUGGING_INFO]: Define dummy
* gengtype-lex.l (IWORD): Allow 'bool'.
(ptr_alias): Match.
* gengtype-yacc.y (ALIAS): New token.
(type_option): New rule.
(option): Use type_option.
* gengtype.c (process_gc_options): New.
(set_gc_used_type): Use it.
(write_gc_structure_fields): Add 'bitmap' parameter, change callers.
Add new variable 't' to hold the type of the field being processed.
Add more error checking. Use UNION_P when looking at 'desc' option.
Handle language-specific structures containing other
language-specific structures.
(write_gc_types): Handle 'ptr_alias' option.
(main): Don't need to specially output lang_type, lang_decl, lang_id2.
* ggc-common.c (ggc_pending_trees): Delete.
(ggc_mark_roots): Don't manipulate ggc_pending_trees.
(ggc_mark_trees): Delete.
(gt_ggc_m_tree_node): Delete.
* ggc.h (ggc_pending_trees): Delete.
(ggc_mark_tree): Make alias of gt_ggc_m_tree_node.
* hashtable.h (ht_identifier): Use gengtype.
* langhooks-def.h (LANG_HOOKS_MARK_TREE): Delete.
* langhooks.h (struct lang_hooks): Delete mark_tree.
* sdbout.c [! SDB_DEBUGGING_INFO]: Define dummy sdb_debug_hooks
* system.h: Poison LANG_HOOKS_MARK_TREE.
* tree.c (tree_node_structure): New.
* tree.h (struct tree_common): Use gengtype.
(struct tree_int_cst): Likewise.
(struct tree_real_cst): Likewise.
(struct tree_string): Likewise.
(struct tree_complex): Likewise.
(struct tree_vector): Likewise.
(struct tree_identifier): Likewise.
(struct tree_list): Likewise.
(struct tree_vec): Likewise.
(struct tree_exp): Likewise.
(struct tree_block): Likewise.
(struct tree_type): Likewise.
(struct tree_decl): Likewise.
(enum tree_structure_enum): New.
(union tree_node): Use gengtype, with an alias.
(tree_node_structure): Prototype.
* objc/objc-lang.c (LANG_HOOKS_MARK_TREE): Delete.
Merge to tag pch-merge-20020430. The LANG_HOOKS_FUNCTION_MARK
macro was deleted. The LANG_HOOKS_FUNCTION_FREE macro was renamed
* (GTFILES): Add bitmap.h.
* except.c (struct eh_region): Mark field 'aka' to be skipped.
* config/alpha/alpha.c [TARGET_ABI_UNICOSMK]
(alpha_init_machine_status): Give proper type.
* (c-lang.o): Depend on gtype-c.h.
(optabs.o): Depend on gt-optabs.h.
(GTFILES): Add optabs.o.
(gt-optabs.h): Add rule.
* optabs.c: Include gt-optabs.h.
* gengtype.c (set_gc_used_type): Correct some errors in last change.
(write_gc_structure_fields): If a field which should be NULL is
not, abort.
* c-pragma.c: Move struct align_stack and variable alignment_stack
out from the ifdef.
* config/xtensa/t-xtensa: Add dependencies for gt-xtensa.h.
* config/xtensa/xtensa.c: Include gt-cris.h.
(struct machine_function): Use gengtype to mark.
* config/mmix/mmix.h (struct machine_function): Use gengtype
to mark.
* config/cris/t-cris: Add dependencies for gt-cris.h.
* config/cris/cris.c: Include gt-cris.h.
(struct machine_function): Use gengtype to mark.
* config/rs6000/rs6000.h (struct machine_function): Use gengtype
to mark.
* doc/tm.texi (Per-Function Data): Delete references to
* config/ia64/ia64.c (ia64_override_options): Don't set
* config/i386/i386.c (override_options): Likewise.
* config/d30v/d30v.c (d30v_init_expanders): Likewise.
* config/arm/arm.c (arm_init_expanders): Likewise.
* config/alpha/alpha.c (override_options): Likewise.
* gengtype.h (enum gc_used_enum): Add GC_MAYBE_POINTED_TO.
* gengtype.c (set_gc_used_type): Handle 'maybe_null' option.
(write_gc_structure_fields): Don't handle 'really' option.
Handle 'maybe_null' option.
(write_gc_types): Handle 'maybe_null' option.
* function.h (struct function): Don't use "really".
(mark_machine_status): Delete declaration.
(mark_lang_status): Delete declaration.
(gt_ggc_mr_machine_function): Delete prototype.
(gt_ggc_mr_language_function): Delete prototype.
* function.c (mark_machine_status): Delete.
(mark_lang_status): Delete.
(gt_ggc_mr_machine_function): Delete.
(gt_ggc_mr_language_function): Delete.
* c-tree.h (mark_c_function_context): Delete prototype.
* c-objc-common.c (c_objc_common_init): Don't set mark_lang_status.
* c-decl.c (struct language_function): Rename from struct
c_language_function. Update uses. Use gengtype to mark.
(mark_c_function_context): Delete.
* c-common.h (struct c_language_function): Rename from struct
(mark_stmt_tree): Delete prototype.
(c_mark_lang_decl): Delete prototype.
(mark_c_language_function): Delete prototype.
* c-common.c (mark_stmt_tree): Delete.
(c_mark_lang_decl): Delete.
(mark_c_language_function): Delete.
* gengtype.h (enum typekind): Add TYPE_LANG_STRUCT.
(lang_bitmap): New typedef. Use where appropriate.
(struct type): Add gc_used field, lang_struct field.
(UNION_P): New macro.
(new_structure): New prototype.
(find_structure): Remove 'pos' parameter. Change all callers.
* gengtype-lex.l: Update for changes to find_structure.
* gengtype-yacc.y (typedef_struct): Use new_structure.
(yacc_ids): Suppress warning.
(type): Use new_structure.
* gengtype.c (string_type): Update for changes to struct type.
(find_structure): Just find a structure, don't worry about
creating one.
(new_structure): New.
(note_yacc_type): Use new_structure.
(set_gc_used_type): New.
(set_gc_used): New.
(write_gc_structure_fields): Allow for pointers to TYPE_LANG_STRUCT.
(write_gc_types): Handle TYPE_LANG_STRUCT.
(write_gc_marker_routine_for_structure): New.
(main): Call set_gc_used. Add some calls to set_gc_used_type
for places where GCC doesn't use gengtype properly yet.
* ggc.h (gt_ggc_m_rtx_def): Don't prototype.
(gt_ggc_m_tree_node): Likewise.
* varasm.c (copy_constant): Call expand_constant if we hit
something we can't recognize.
* ggc-common.c (ggc_mark_rtvec_children): Delete.
(ggc_mark_rtx_children): Use generic name for ggc_mark_rtvec.
(lang_mark_false_label_stack): Delete.
* rtl.h (struct rtvec_def): Use gengtype to mark.
* ggc.h (ggc_mark_rtvec): Delete.
(gt_ggc_m_rtvec_def): Delete.
(ggc_mark_nonnull_tree): Delete.
(ggc_mark_rtvec_children): Delete prototype.
(lang_mark_false_label_stack): Delete declaration.
* gengtype.h (note_yacc_type): Add prototype.
* gengtype.c (note_yacc_type): New function.
* gengtype-lex.l: Add lexer support for yacc files.
* gengtype-yacc.y (start): Extract union from yacc files.
(yacc_union): New rule.
(yacc_typematch): New rule.
(yacc_ids): New rule.
(enum_items): Tweak for efficiency.
(optionseq): Likewise.
* c-common.h (struct language_function): Use gengtype.
(struct c_lang_decl): Likewise.
* c-tree.h (struct lang_decl): Likewise.
(struct lang_type): Likewise.
* c-decl.c (lang_mark_tree): Use generated marker routines to mark
tree language substructures.
* stringpool.c (mark_ident): Replace ggc_mark_nonnull_tree with
* dwarf2asm.c (mark_indirect_pool_entry): Likewise.
* varasm.c (struct rtx_const): Remove 'skip' tags for scalar arrays.
* stmt.c (struct nesting): Add discriminator. Use gengtype to
mark. Remove 'data.block.cleanup_ptr' field.
(struct stmt_status): Use usual technique to mark struct nesting.
(gt_ggc_mr_nesting_cond): Delete.
(gt_ggc_mr_nesting_loop): Delete.
(gt_ggc_mr_nesting_block): Delete.
(gt_ggc_mr_nesting_case_stmt): Delete.
(expand_start_cond): Set discriminator.
(expand_start_loop): Likewise.
(expand_start_null_loop): Likewise.
(expand_start_bindings_and_block): Set discriminator. Don't set
deleted fields.
(expand_decl_cleanup): Replace 'cleanup_ptr' with
(expand_start_case): Set discriminator.
(expand_start_case_dummy): Set discriminator.
* ggc-callbacks.c: Remove.
* gengtype.h (struct type): Add 'u.s.bitmap' field.
(find_structure): Add 'pos' parameter.
* gengtype-lex.l: Update callers to find_structure.
* gengtype-yacc.y: Likewise.
* gengtype.c (find_structure): Allow for structures to be defined
in multiple language backends.
(get_output_file_with_visibility): Include debug.h in gtype-desc.c.
(counter): Rename to gc_counter.
(write_gc_structure_fields): Fail when writing out fields for
an incomplete structure. Ignore arrays of scalars. Handle
'tree_vec' special.
(write_gc_types): Reset counter for each procedure written.
* stmt.c (add_case_node): Use GGC to allocate struct case_node.
(free_case_nodes): Delete.
(expand_end_case_type): Delete call to free_case_nodes.
* (cselib.o): Include gt-<filename>.h.
(gcse.o): Likewise.
(profile.o): Likewise.
(alias.o): Likewise.
(GTFILES): Add alias.c, cselib.c, gcse.c, profile.c, and
alphabetize backend files.
(gt-alias.h, gt-cselib.h, gt-gcse.h, gt-profile.h): New rules.
* alias.c: Use gengtype for roots.
* c-common.h (struct stmt_tree_s): Use gengtype.
* c-decl.c: Use gengtype for roots.
* cselib.c: Use gengtype for roots.
* expr.c: Use gengtype for roots.
* fold-const.c: Use gengtype for roots.
* gcse.c: Use gengtype for roots.
* gengtype-lex.l: Handle typedefs of function types.
Allow for empty array bounds.
Allow processing to stop on initializers.
* gengtype-yacc.y (externstatic): Stop processing on initializers.
(semiequal): New rule.
* gengtype.c (create_file): Tidy output files.
(get_output_file_with_visibility): Fix paren warning. Fix bug
involving multiple input files mapping to one output file.
(write_gc_structure_fields): Skip arrays of scalars.
(write_gc_types): Tidy output files.
(write_gc_root): New function.
(write_gc_roots): Fix bugs, add support for roots that are
* ggc-common.c (ggc_mark_rtx_ptr): Delete.
(ggc_mark_tree_ptr): Delete.
(ggc_add_rtx_root): Delete.
(ggc_add_tree_root): Delete.
(ggc_del_root): Delete.
* integrate.c (get_func_hard_reg_initial_val): Use ggc_alloc to
allocate struct initial_value_struct.
* profile.c: Use gengtype for roots.
* sdbout.c: Use gengtype for roots.
* varasm.c (mark_weak_decls): Delete unused prototype.
(mark_const_hash_entry): Delete unused function.
* config/darwin-protos.h: Use gengtype for roots.
(machopic_add_gc_roots): Delete.
* config/arm/arm.c: Use gengtype for roots.
* config/arm/arm.h: Use gengtype for roots.
* config/c4x/c4x-protos.h: Use gengtype for roots.
* config/c4x/c4x.c (c4x_add_gc_roots): Delete.
* config/d30v/d30v-protos.h: Use gengtype for roots.
* config/d30v/d30v.c (d30v_add_gc_roots): Delete.
* config/dsp16xx/dsp16xx.c (override_options): Use gengtype for roots.
* config/dsp16xx/dsp16xx.h: Use gengtype for roots.
* config/ia64/ia64-protos.h: Use gengtype for roots.
* config/ia64/ia64.c (ia64_add_gc_roots): Delete.
* config/m68hc11/m68hc11-protos.h: Use gengtype for roots.
* config/m68hc11/m68hc11.c (z_reg): Make global.
(z_reg_qi): Make global.
(m68hc11_add_gc_roots): Delete.
* config/mcore/mcore-protos.h: Use gengtype for roots.
* config/mcore/mcore.c (mcore_add_gc_roots): Delete.
* config/mips/mips.c (mips_add_gc_roots): Delete.
* config/mips/mips.h: Use gengtype for roots.
* config/mmix/mmix.c (override_options): Use gengtype for roots.
* config/mmix/mmix.h: Use gengtype for roots.
* config/mn10200/mn10200.c (asm_file_start): Use gengtype for roots.
* config/mn10200/mn10200.h: Use gengtype for roots.
* config/pa/pa.c: Use gengtype for roots, marking.
(struct deferred_plabel): Use GGC, gengtype.
(pa_add_gc_roots): Delete.
(mark_deferred_plabels): Delete.
* config/pj/pj-protos.h: Use gengtype for roots.
* config/pj/pj.h (OVERRIDE_OPTIONS): Don't define.
* config/rs6000/rs6000.c: Use gengtype for roots. Don't call
* config/rs6000/rs6000.h: Use gengtype for roots.
* config/rs6000/t-darwin (darwin.o): Add dependency on gt-darwin.h.
(gt-darwin.h): Add rule.
* config/sh/sh.c: Use gengtype for roots.
* config/sh/t-sh ($(out_object_file)): Add dependency on gt-sh.h.
(gt-sh.h): Add rule.
* config/sparc/sparc.c: Use gengtype for roots.
(sparc_add_gc_roots): Delete.
(struct ultrasparc_pipeline_state): Use GGC, gengtype.
(mark_ultrasparc_pipeline_state): Delete.
* config/sparc/sparc.h: Use gengtype for roots.
* (c-parse.o): Update dependencies.
(c-common.o): Likewise.
(GTFILES): Add c-common.h, c-tree.h, c-common.c,
Add dependencies for the files they generate.
* c-common.c: Replace ggc_add_* uses with GTY annotations.
* c-common.h: Likewise.
* c-decl.c: Likewise.
(gt_ggc_mp_binding_level): Delete.
* c-lang.c: Include gtype-c.h.
* Replace ggc_add_* uses with GTY annotations. Include
* c-pragma.h: Replace ggc_add_* uses with GTY annotations.
(gt_ggc_mp_align_stack): Delete.
* c-tree.h: Replace ggc_add_* uses with GTY annotations.
* function.c: Replace ggc_add_* uses with GTY annotations.
(gt_ggc_mp_function): Delete.
* function.h: Replace ggc_add_* uses with GTY annotations.
* gengtype.c (lang_names): New.
(open_base_files): Create language base files.
(startswith): New.
(get_file_basename): New.
(get_base_file_bitmap): New.
(get_output_file_with_visibility): Rename from get_output_file.
Add more mappings for various C/Objc filenames.
(finish_root_table): New.
(write_gc_roots): Handle dependencies and scoping properly.
* gengtype.h: Add prototypes for new functions.
* ggc-common.c (struct deletable_root): Delete.
(deletables): Delete.
(ggc_add_deletable_root): Delete.
(ggc_mark_roots): No need to deal with deleted functionality.
* ggc.h (ggc_add_deletable_root): Delete prototype.
* objc/ (objc-act.o): Add gtype-objc.h dependency.
(gtype-objc.h): Add rule to create.
* objc/ (gtfiles): New.
* objc/objc-act.c: Allocate imp_list using GGC. Replace uses of
ggc_add_* with GTY markers. Include gtype-objc.h.
(ggc_mark_imp_list): Delete.
* objc/objc-act.h: Replace uses of ggc_add_* with GTY markers.
* objc/objc-lang.c: Random Whitespace Change.
* except.h (exception_handler_labels): Delete.
(get_exception_handler_labels): New.
* except.c (exception_handler_labels): Delete.
(struct eh_status): Add exception_handler_labels field.
(doing_eh): Don't add exception_handler_labels as root.
(free_eh_status): Don't need to free exception_handler_labels.
(get_exception_handler_labels): New.
(find_exception_handler_labels): Update for move of
(remove_exception_handler_label): Likewise.
* cfgrtl.c (can_delete_label_p): Use get_exception_handler_labels.
* jump.c (rebuild_jump_labels): Likewise.
* loop.c (find_and_verify_loops): Likewise.
* sched-rgn.c (is_cfg_nonregular): Likewise.
* gengtype.c (write_gc_structure_fields): Handle variable-length
* varasm.c (struct weak_syms): Use GGC, gengtype.
(mark_weak_decls): Delete.
(weak_decls): Likewise.
(add_weak): Likewise.
(remove_from_pending_weak_list): Likewise.
(init_varasm_once): Likewise.
* (gtype-desc.o): Add libfuncs.h dependency.
(GTFILES): Add tree.h, libfuncs.h, emit-rtl.c, explow.c,
stor-layout.c, regclass.c, and lists.c.
Add dependencies of gt-emit-rtl.h gt-explow.h gt-stor-layout.h
gt-regclass.h and gt-lists.h on s-gtype.
* emit-rtl.c: Use gengtype for roots. Include gt-emit-rtl.h.
* except.c: Use gengtype for roots.
* explow.c: Use gengtype for roots. Include gt-explow.h.
* expr.h (init_stor_layout_once): Delete prototype.
* function.c: Use gengtype for roots.
* gengtype-lex.l: Add ENT_EXTERNSTATIC lexing.
* gengtype-yacc.y (start): Can also be an externstatic.
(externstatic): New production.
(struct_fields): Correct array bounds inversion for 2-d arrays.
* gengtype.c (variables): New variable.
(note_variable): New function.
(get_output_file): Include libfuncs.h into gtype-desc.c.
(get_output_file_name): New function.
(write_gc_structure_fields): Suppress warnings.
(write_gc_types): Make static.
(put_mangled_filename): New function.
(write_gc_roots): New function.
(main): Call write_gc_roots.
* gengtype.h (note_variable): Prototype.
(get_output_file_name): Prototype.
(write_gc_types): Delete prototype.
* ggc.h: Clean up unnecessary structure predefinitions.
(struct ggc_root_tab): Define.
(gt_ggc_m_rtx_def): Make function, not macro.
(gt_ggc_m_tree_node): Likewise.
* libfuncs.h: Use gengtype for roots.
* lists.c: Use gengtype for roots. Include gt-lists.h.
(init_EXPR_INSN_LIST_cache): Delete.
* optabs.c: Use gengtype for roots.
(gt_ggc_mp_optab): Delete.
* optabs.h: Use gengtype for roots.
* regclass.c: Use gengtype for roots. Include gt-regclass.h.
* rtl.h: Use gengtype for roots.
(init_EXPR_INSN_LIST_cache): Delete prototype.
* stor-layout.c: Use gengtype for roots.
Include gt-stor-layout.h.
(init_stor_layout_once): Delete.
* toplev.c: Use gengtype for roots. Delete calls to deleted
* tree.c: Use gengtype for roots.
* tree.h: Use gengtype for roots.
* varasm.c: Use gengtype for roots.
* (GTFILES): Add @all_gtfiles@.
* configure: Regenerate.
* Construct all_gtfiles from the gtfiles definitions
* gengtype-yacc.y (type): Warn about duplicate structure names.
* gengtype.c (get_output_file): Handle .c files in language
* (GTFILES): Run gengtype on all the config files
and on the target .c file.
* except.c (mark_eh_region): Delete.
(init_eh_for_function): Use GGC on struct eh_status.
(mark_eh_status): Delete.
(free_eh_status): Use GGC.
(expand_eh_region_start): Use GGC to
(collect_eh_region_array): Allocate last_region_number using GGC.
(duplicate_eh_region_1): Use GGC to allocate struct eh_region.
(remove_eh_handler): Let GGC free struct eh_region.
(add_call_site): Use GGC to reallocate call_site_record array.
* function.c (init_machine_status): Update calling sequence.
(mark_machine_status): Likewise.
(mark_lang_status): Likewise.
(prepare_function_start): Update init_machine_status call.
(mark_function_status): Delete.
(maybe_mark_struct_function): Delete.
(ggc_mark_struct_function): Delete.
(gt_ggc_mp_function): New.
(gt_ggc_mr_machine_function): New.
(gt_ggc_mr_language_function): New.
(init_function_once): Use canonical names.
* function.h (struct function): Use gengtype.
(init_machine_status): Return the structure.
(mark_machine_status): Take a 'void *'.
(mark_lang_status): Likewise.
* ggc-common.c (ggc_mark_trees): Use canonical name for
* tree.h (ggc_mark_struct_function): Delete prototype.
* config/alpha/alpha.c (alpha_mark_machine_status): Delete.
(alpha_init_machine_status): Likewise.
(override_options): Use canonical name for alpha_mark_machine_status.
* config/alpha/unicosmk.h (struct machine_function): Use gengtype.
* config/arm/arm.h (struct machine_function): Use gengtype.
* config/arm/arm.c (arm_mark_machine_status): Delete.
(arm_init_machine_status): Update calling sequence.
(arm_init_expanders): Use canonical name for arm_mark_machine_status.
* config/cris/cris.c (cris_init_machine_status): Update
calling sequence.
* config/d30v/d30v.h (struct machine_function): Use gengtype.
* config/d30v/d30v.c (d30v_init_machine_status): Update
calling sequence.
(d30v_mark_machine_status): Delete.
* config/i386/i386.c: Include gt-i386.h.
(struct machine_function): Use gengtype.
(ix86_init_machine_status): Update calling sequence.
(ix86_mark_machine_status): Delete.
(override_options): Use canonical namke for ix86_mark_machine_status.
* config/ia64/ia64.h (struct machine_function): Use gengtype.
* config/ia64/ia64.c (ia64_init_machine_status): Update calling
(ia64_mark_machine_status): Delete.
(ia64_override_options): Use canonical name for
* config/mmix/mmix.c (mmix_init_machine_status): Update calling
* config/rs6000/rs6000.c (rs6000_init_machine_status): Likewise.
* config/xtensa/xtensa.c (xtensa_init_machine_status): Likewise.
* gengtype.c (get_output_file): Fix warning.
(main): Add prototype to suppress warning.
* tree.c: Remove tree_hash_mark prototype.
* tree.h (init_stmt): Delete prototype.
* toplev.c (lang_independent_init): Don't call init_stmt.
* stmt.c (ALLOC_NESTING): Use GGC for 'struct nesting'.
(stmt_obstack): Delete.
(POPSTACK): No need to free 'struct nesting'.
(gt_ggc_mr_nesting_cond): Use canonical names.
(gt_ggc_mr_nesting_loop): Use canonical names.
(gt_ggc_mr_nesting_block): Use canonical names.
(gt_ggc_mr_nesting_case_stmt): Use canonical names.
(mark_stmt_status): Delete.
(init_stmt): Delete.
(clear_last_expr): Clear both last_expr_type and last_expr_value.
Use it everywhere that last_expr_type was cleared.
* lists.c (init_EXPR_INSN_LIST_cache): Use ggc_add_deletable_root.
(zap_lists): Delete.
* ggc.h (ggc_add_deletable_root): Prototype.
(mark_stmt_status): Remove prototype.
* ggc-common.c (ggc_add_deletable_root): New.
(ggc_mark_roots): Handle deletable roots.
* function.c (ggc_mark_struct_function): Use canonical name
for mark_stmt_status.
* emit-rtl.c (free_sequence_stack): New.
(start_sequence): Use a freelist for sequences.
(end_sequence): Likewise.
(init_emit_once): Add free_sequence_stack as a deleteable root.
* c-pragma.c Include gt-c-pragma.h.
(struct align_stack): Use gengtype.
(push_alignment): Use GGC for struct align_stack.
(mark_align_stack): Delete.
(gt_ggc_mp_align_stack): New.
(init_pragma): Use canonical name for mark_align_stack.
* c-decl.c: Include gt-c-decl.h.
(struct binding_level): Use gengtype.
(make_binding_level): Use GGC; handle the freelist here.
(pop_binding_level): New.
(pushlevel): Move code into make_binding_level.
(push_label_level): Likewise.
(poplevel): Move code into pop_binding_level.
(pop_label_level): Likewise.
(mark_binding_level): Delete.
(gt_ggc_mp_binding_level): New.
(c_init_decl_processing): Use canonical name for mark_binding_level.
Add free_binding_level as deletable root.
(mark_c_function_context): Use canonical name for mark_binding_level.
* (c-decl.o): Add gt-c-decl.h.
(c-pragma.o): Add gt-c-pragma.h.
(GTFILES): Add c-decl.c and c-pragma.c.
(gt-c-decl.h, gt-c-pragma.h): Create using gengtype.
* tree.c (struct type_hash): Use gengtype.
(init_obstacks): Use canonical name for type_hash_mark.
(type_hash_mark): Delete.
Include gt-tree.h.
* rtl.h (struct mem_attrs): Use gengtype.
* optabs.h (struct optab): Use gengtype.
* optabs.c (expand_binop): Squish signed/unsigned warning.
(mark_optab): Make local, use canonical name, use autogenerated
marker procedure.
(init_optabs): Use canonical name for mark_optab.
(new_optab): Use GGC to allocate optabs.
* ggc.h: Delete mark_optab prototype.
* ggc-common.c (ggc_mark_rtx_children): Use canonical name for
mem_attrs marker procedure.
* gengtype.c (get_output_file): Include headers in gtype-desc.c
explicitly rather than deducing them from file names.
(write_gc_structure_fields): Handle arrays of structures.
(main): Return nonzero exit code if errors occur during output.
* emit-rtl.c (mem_attrs_mark): Delete.
(init_emit_once): Use canonical name for mem_attrs marker procedure.
* (gtype-desc.o): Explicitly name dependencies.
(tree.o): Depend on gt-tree.h.
(GTFILES): Add rtl.h, optabs.h, tree.c.
(gt-tree.h): Add it to s-gtype rule.
* .cvsignore: Ignore gengtype flex/bison generated files.
* (GGC_H): Add gtype-desc.h.
(OBJS): Add gtype-desc.o.
(GEN): Add gengtype.
(STAGESTUFF): Add gengtype.
(varasm.o): Add gt-varasm.h.
(stmt.o): Add gt-stmt.h.
(except.o): Add gt-except.h.
(integrate.o): Add gt-integrate.h.
Add new rules for new files.
* configure: Regenerate.
* Correct defaults.h paths.
* emit-rtl.c (mark_sequence_stack): Delete.
(mark_emit_status): Delete.
(start_sequence): Allocate sequence structures using GGC.
(end_sequence): Allocate sequence structures using GGC.
* except.c: Use gengtype for various structures. Include
* expr.c (mark_expr_status): Delete.
* function.c: Use gengtype for various structures. Include
(mark_function_status): Use standard gt_ggc names for marker functions.
(ggc_mark_struct_function): Likewise.
* function.h: Use gengtype for various structures.
* gengtype-lex.l: New file.
* gengtype-yacc.y: New file.
* gengtype.c: New file.
* gengtype.h: New file.
* ggc.h: Include gtype-desc.h. Alias some marker procedures to
the standard names. Remove some now-unnecessary prototypes.
* integrate.c: Use gengtype for various structures. Include
(mark_hard_reg_initial_vals): Delete.
* integrate.h (mark_hard_reg_initial_vals): Delete.
* stmt.c: Use gengtype for various structures. Include
(mark_case_node): Delete.
(mark_goto_fixup): Delete.
(mark_stmt_status): Use standard gt_ggc names for marker functions.
* system.h: Define GTY to empty. In flex/bison files,
don't poison malloc or realloc, instead just define them to
xmalloc and xrealloc.
* varasm.c: Use gengtype for various structures. Include
gt-varasm.h. Use standard gt_ggc names for marker functions.
(mark_pool_constant): Delete.
(mark_varasm_status): Delete.
(decode_rtx_const): #if 0 out non-typesafe hack.
* function.h (free_lang_status): Mark as obsolete.
* function.c (free_lang_status): Mark as obsolete.
* c-decl.c (push_c_function_context): Use GC to allocate and free
struct language_function.
(pop_c_function_context): Likewise.
* c-common.c (mark_c_language_function): Mark struct
* doc/tm.texi (Per-Function Data): Don't document free_machine_status.
Document that the machine_function structures must be allocated
using GC. Update mark_machine_status documentation.
* function.h: Don't declare free_machine_status.
* function.c (free_machine_status): Don't define.
(free_after_compilation): Don't call free_machine_status.
(ggc_mark_struct_function): Mark f->machine. Call
mark_machine_status only on non-NULL pointers.
* system.h: Poison free_machine_status.
* config/xtensa/xtensa.c (xtensa_init_machine_status): Use GC on
struct machine_function.
(xtensa_free_machine_status): Delete.
(override_options): Don't set free_machine_status.
* config/rs6000/rs6000.c (rs6000_override_options): Don't set
(rs6000_init_machine_status): Use GC on struct machine_function.
(rs6000_free_machine_status): Delete.
* config/ia64/ia64.c (ia64_init_machine_status): Use GC on struct
(ia64_mark_machine_status): Likewise.
(ia64_free_machine_status): Delete.
(ia64_override_options): Don't set free_machine_status.
* config/i386/i386.c (override_options): Don't set
(ix86_init_machine_status): Use GC on struct machine_function.
(ix86_mark_machine_status): Likewise.
(ix86_free_machine_status): Delete.
* config/d30v/d30v.c: (d30v_init_machine_status): Use GC on struct
(d30v_mark_machine_status): Likewise.
(d30v_free_machine_status): Delete.
(d30v_init_expanders): Don't set free_machine_status.
* config/arm/arm.c (arm_mark_machine_status): Use GC on struct
(arm_init_machine_status): Likewise.
(arm_free_machine_status): Delete.
(arm_init_expanders): Don't set free_machine_status.
* config/alpha/alpha.c (override_options): Don't set
(alpha_init_machine_status): Use GC on struct machine_function.
(alpha_mark_machine_status): Likewise.
(alpha_free_machine_status): Delete.
* varasm.c (compare_constant): Fix typo.
* varasm.c: Don't include obstack.h.
(struct varasm_status): x_const_rtx_hash_table is a hash of rtxes.
(struct rtx_const): Give substructures names, improve formatting.
(struct constant_descriptor): Delete.
(struct constant_descriptor_tree): New, based on constant_descriptor.
(const_hash_table): Is a hash table of trees.
(mark_const_hash_entry): Is used for hashes of trees. Mark
constant_descriptor_tree structure.
(mark_const_str_htab_1): Mark deferred_string structure.
(compare_constant): Rewrite to compare trees.
(compare_constant_1): Delete.
(record_constant): Delete.
(record_constant_1): Delete.
(output_constant_def): Use struct constant_descriptor_tree.
Don't duplicate trees twice.
(struct constant_descriptor_rtx): New.
(struct pool_constant): Used for rtx constants.
(init_varasm_status): Update for change to struct varasm_status.
(mark_varasm_status): Likewise.
(free_varasm_status): Delete.
(compare_constant_rtx): Rewrite to handle constant_descriptor_rtx.
(record_constant_rtx): Likewise.
(mem_for_const_double): Update to use struct constant_descriptor_rtx.
(force_const_mem): Likewise.
* (varasm.o): Doesn't depend on obstack.h.
* function.c (free_after_compilation): Don't use free_varasm_status.
* function.h: Don't prototype free_varasm_status.
* ggc-common.c (ggc_realloc): Handle X being NULL.
* ggc-common.c (ggc_realloc): New function.
* ggc.h: Prototype it.
* emit-rtl.c (free_emit_status): Delete.
(init_emit): Allocate emit subarrays using GC.
(gen_reg_rtx): Reallocate subarrays using GC.
(init_emit): Use GC to allocate 'struct emit_status' and its
(mark_emit_status): Mark structure and its subarrays.
* stmt.c (free_stmt_status): Delete.
* expr.c (free_expr_status): Delete.
* function.h: Remove prototypes for deleted functions.
* function.c (free_after_compilation): Don't use deleted functions.
Don't call free() on x_parm_reg_stack_loc.
(free_after_parsing): Don't use free_stmt_status.
(assign_parms): Use GC to allocate and resize x_parm_reg_stack_loc.
(mark_function_status): Mark x_parm_reg_stack_loc.
* varasm.c (init_varasm_status): Use GC to allocate
'struct varasm_status' and its fields x_const_rtx_hash_table
and x_const_rtx_sym_hash_table.
(mark_varasm_status): Mark them.
(free_varasm_status): Use GC to free them.
* expr.c (init_expr): Use GC to allocate 'struct expr_status'.
(mark_expr_status): Mark the structure itself.
(free_expr_status): Use GC to free the structure.
* stmt.c (free_stmt_status): Use GC to free 'struct stmt_status'.
(mark_stmt_status): Mark the 'struct stmt_status' itself.
(init_stmt_for_function): Allocate the structure for GC.
* dwarf2out.c (lookup_type_die): Use TYPE_SYMTAB_DIE.
(equate_type_number_to_die): Likewise.
* tree.h (TYPE_SYMTAB_DIE): New macro.
(struct die_struct): Predeclare.
(struct tree_type): Add field symtab.die. Add a tag
to the union type of field symtab.
* varray.h (VARRAY_RTVEC_INIT): A varray of rtvec contains
'struct rtvec_def *', not 'struct rtvec_def'.
* function.h (original_arg_vector): Make a real rtvec.
* function.c (ggc_mark_struct_function): Adjust.
* integrate.c (expand_inline_function): Adjust.
2002-06-04 Jason Thorpe <>
* config.gcc (sh5-*-netbsd*, sh5l*-*-netbsd*)
(sh64-*-netbsd*, sh64l*-*-netbsd*): New targets.
* config/sh/netbsd-elf.h (TARGET_VERSION_ENDIAN)
(TARGET_VERSION_CPU): Define according to the
default target.
(LINK_DEFAULT_CPU_EMUL): Define according to the
default target.
(ASM_SPEC): Remove.
and TARGET_SHMEDIA64 which abort, for now.
* config/sh/t-netbsd-sh5: New file.
* config/sh/t-netbsd-sh5-32: New file.
* config/sh/t-netbsd-sh5-64: New file.
2002-06-03 Falk Hueffner <>
Richard Henderson <>
* config/alpha/alpha.c (reg_or_const_int_operand): New.
(some_operand, input_operand): Accept CONST_VECTOR.
(alpha_extra_constraint): Add 'W'.
(alpha_expand_zap_mask): New.
(alpha_expand_builtin_vector_binop): New.
(enum alpha_builtin): New.
(zero_arg_builtins, one_arg_builtins, two_arg_builtins): New.
(alpha_init_builtins, alpha_expand_builtin): New.
* config/alpha/alpha.h (VECTOR_MODE_SUPPORTED_P): New.
* config/alpha/alpha-protos.h: Update.
* config/alpha/ (UNSPEC_CMPBGE, UNSPEC_ZAP,
(movv8qi, movv8qi_fix, movv8qi_nofix): New.
(movv4hi, movv4hi_fix, movv4hi_nofix): New.
(movv2si, movv2si_fix, movv2si_nofix): New.
(uminv8qi3, sminv8qi3, uminv4hi3, sminv4hi3): New.
(umaxv8qi3, smaxv8qi3, umaxv4hi3, smaxv4hi3): New.
(builtin_cmpbge, builtin_extql, builtin_extqh, builtin_zap,
builtin_zap_1, builtin_zapnot, builtin_zapnot_1, builtin_amask,
builtin_implver, builtin_rpcc, builtin_minub8, builtin_minsb8,
builtin_minuw4, builtin_minsw4, builtin_maxub8, builtin_maxsb8,
builtin_maxuw4, builtin_maxsw4, builtin_perr, builtin_pklb,
pklb, builtin_pkwb, pkwb, builtin_unpkbl, unpkbl,
builtin_unpkbw, unpkbw): New.
* doc/extend.texi (Alpha Built-in Functions): New.
2002-06-03 Richard Henderson <>
* crtstuff.c (__EH_FRAME_BEGIN__): Conditionalize on
2002-06-03 Richard Henderson <>
* config/alpha/alpha-protos.h: Eliminate unneeded ifdefs.
* config/alpha/alpha.c (reg_or_0_operand): Use CONST0_RTX.
(const0_operand): New.
(reg_or_fp0_operand, fp0_operand): Remove.
* config/alpha/alpha.h (PREDICATE_CODES): Update.
* config/alpha/alpha-protos.h: Update.
* config/alpha/ Replace all uses of reg_or_fp0_operand
and fp0_operand with reg_or_0_operand and const0_operand.
2002-06-03 Dan Nicolaescu <>
* alias.c (nonoverlapping_memrefs_p): Fix off by one error.
2002-06-03 Roger Sayle <>
* gcse.c (cprop_jump): Use single_set to get the pattern
from the setcc argument.
2002-06-03 Gabriel Dos Reis <>
* diagnostic.h (diagnostic_count): Move from output_buffer to
(diagnostic_kind_count): Adjust definition.
Mon Jun 3 19:11:53 CEST 2002 Jan Hubicka <>
* except.c (except.c): Do not rebuild CFG.
* toplev.c (rest_of_compilation): Recompute CFG after sibcall
Mon Jun 3 11:53:01 CEST 2002 Jan Hubicka <>
* integrate.c (copy_insn_list): Properly pace the INSN_SCOPE copies.
* toplev.c: Include cfglahout.h
* (toplev.c): Add dependnecy.
2002-06-03 Neil Booth <>
* config/i386/i386.h (TARGET_CPU_CPP_BUILTINS): New.
2002-06-03 Jason Thorpe <>
* config/ns32k/netbsd.h: Update copyright years.
* config/ns32k/ns32k.h (CPP_PREDEFINES): Remove.
2002-06-02 Kazu Hirata <>
* emit-rtl.c: Fix formatting.
* errors.h: Likewise.
* except.c: Likewise.
* explow.c: Likewise.
* expmed.c: Likewise.
* expr.c: Likewise.
* expr.h: Likewise.
2002-06-02 Kazu Hirata <>
* config/h8300/elf.h: Fix formatting.
* config/h8300/rtems.h: Likewise.
2002-06-03 Jason Thorpe <>
* config/rs6000/netbsd.h (DRAFT_V4_STRUCT_RET): Remove.
2002-06-02 Tom Tromey <>
* fixinc/fixincl.x: Rebuilt.
* fixinc/inclhack.def (thread_keyword): Match `*__thread'.
2002-06-02 Neil Booth <>
* mvs.h: Similarly.
* oe.h: Similarly.
Mon Jun 3 00:18:20 CEST 2002 Jan Hubicka <>
* final.c (final): Allow notes to not have computed addresses;
kill no longer needed STACK_REGS ifdef.
2002-06-02 Richard Henderson <>
* gcse.c (bypass_conditional_jumps): Fix typo last change.
Sun Jun 2 23:02:11 CEST 2002 Jan Hubicka <>
* loop.c (emit_prefetch_instructions): Properly place the address
Sun Jun 2 22:56:48 CEST 2002 Jan Hubicka <>
* basic-block.h (basic_block_for_insn, BLOCK_FOR_INSN): Kill.
(set_block_for_insn): Turn into macro.
* cfgbuild.c (find_basic_block): Do not clear basic_block_for_insn.
* cfglayout.c (insn_scopes): Kill.
(scope_to_insns_initialize): Do not use insn_scopes.
(scope_to_insns_finalize): Likewise.
(duplicate_insn_chain): Likewise.
(cfg_layout_initialize, cfg_layout_finalize): Do not turn scopes to notes.
* cfgrtl.c (basic_block_for_insn): Kill.
(delete_insn_and_edges, delete_insn_chain_and_edges): Simplify.
(create_basic_block_structure): Use reorder_insns.
(compute_bb_for_insn): Do not use basic_block_for_insn.
(merge_blocks_nomove): Likewise.
(update_bb_for_insn): Likewise.
(verify_flow_info): Likewise.
(set_block_for_insn): Kill.
* combine.c (try_combine): Update gen_rtx_INSN call.
* emit-rtl.c (gen_label_rtx): Update gen_rtx_CODE_LABEL call.
(mark_insn_raw, make_jump_insn_raw, make_call_insn_raw): Clear
scopes and BBs.
(add_insn_after, add_insn_before, remove_insn, reorder_insns): Simplify.
(emit_note_before, emit_note_after, emit_line_note_after, emit_note):
Clear BB.
(emit_insns_after): Simplify.
(emit_copy_of_insn_after): Copy scope.
* final.c (final_start_function): Lower scopes.
* flow.c (check_function_return_warnings): Do not rely on deleted insn.
* integrate.c (copy_insn_list): Cope scopes.
* jump.c (duplicate_loop_exit_test): LIkewise; simplify.
* loop.c (loop_optimize): Do not care block notes.
* print-rtl.c (print_rtx): Print BB.
* recog.c (apply_change_group): Simplify.
* rtl.c (copy_rtx): Handle 'B'.
* rtl.def (INSN, CALL_INSN, JUMP_INSN, NOTE): Add extra fields.
* rtl.h (Field accessors): Update indexes.
* sched-ebb.c (schedule_ebbs): Do not lower notes.
* sched-rgn.c (schedule_insns): Likewise.
* toplev.c (rest_of_compilation): Lower notes.
* unroll.c (unroll_loop): Do not care scoping notes.
(copy_loop_body): Copy scopes.
2002-06-02 Neil Booth <>
* elf.h: Use TARGET_OS_CPP_BUILTINS rather than
* rtems.h: Similarly.
2002-06-02 Richard Henderson <>
* alias.c: Include target.h.
(mark_constant_function): Use targetm.binds_local_p instead
of checking TREE_PUBLIC ourselves.
* (alias.o): Add TARGET_H.
2002-06-02 Neil Booth <>
* c-lex.c: Update copyright and file description.
2002-06-02 Neil Booth <>
* config/fr30/fr30.h: Update to new CPP macros.
2002-06-02 Neil Booth <>
* config/dsp16xx/dsp16xx.h: Update to new CPP macros.
2002-06-02 Neil Booth <>
Zack Weinberg <>
* c-common.c (c_common_init): Override cpplib's default
warn_long_long setting.
* c-lex.c (lex_number): Replace with interpret_integer,
interpret_float, narrowest_unsigned_type and
narrowest_signed_type, taking advantage of the new
cpplib functionality.
* cpperror.c (_cpp_begin_message): If a warning is turned
into an error, avoid printing "warning:".
* cppexp.c (cpp_num_sign_extend): New.
* cppinit.c: Update comment.
* cpplib.h (cpp_num_sign_extend): New.
* tree.h: Update comment.
2002-06-02 Gabriel Dos Reis <>
* diagnostic.h (struct diagnostic_context): Add new member
(internal_error_function): Remove declaration.
* diagnostic.c (internal_error_function): Remove definition..
(internal_error): Adjust use.
2002-06-02 Richard Henderson <>
* rtl.h (CC0_P): New.
* gcse.c (cprop_jump): Use it with single_set. Tweak dump text.
(cprop_insn): Allow any mode register; use CC0_P. CSE out single_set.
(bypass_block): Save old dest block for dump text.
(bypass_conditional_jumps): Allow any mode register; use CC0_P.
Allow only true SET insns, not single_set.
2002-06-02 Gabriel Dos Reis <>
* diagnostic.c (diagnostic_finish): Rename to output_flush.
(clear_disgnostic_info): Rename to output_clear_data. Use false
instead of 0 for boolean value.
Adjust function call throughout.
Sun Jun 2 19:15:27 CEST 2002 Jan Hubicka <>
* cfgrtl.c (commit_one_edge_insertion): Fix warning.
* gcse.c (bypass_conditional_jumps): CSE out single_set call.
2002-06-02 Neil Booth <>
* d30v.h (CPP_PREDEFINES): Replace with
2002-06-02 Roger Sayle <>
* config/alpha/alpha.h [ASM_OUTPUT_LABELREF]: Fix typo.
Sun Jun 2 12:11:52 CEST 2002 Jan Hubicka <>
* gcse.c (bypass_conditional_jumps): Use single set to obtain set.
2002-06-02 Richard Henderson <>
* rtlanal.c (volatile_refs_p): Not automatically true for CALL.
2002-06-02 Marek Michalkiewicz <>
Support for C++ constructors/destructors.
* config/avr/avr.c (avr_output_function_epilogue): Jump to exit()
instead of looping if main() returns.
(asm_file_start): Output global symbols that cause .data and .bss
initialization code to be linked in, unconditionally for now.
(avr_asm_out_ctor, avr_asm_out_dtor): New functions.
* config/avr/libgcc.S (_exit): Split in .fini9 and .fini0 sections.
(__tablejump__): New.
(__do_copy_data, __do_clear_bss): New.
(__do_global_ctors, __do_global_dtors): New.
* config/avr/t-avr (LIB1ASMFUNCS): Add _copy_data, _clear_bss,
_ctors, _dtors.
2002-06-02 Neil Booth <>
* c4x/c4x.h (TARGET_CPU_CPP_BUILTINS): New.
* c4x/rtems.h (CPP_PREDEFINES): Kill.