Fri Jun 14 12:04:02 2002 Dhananjay R. Deshpande <dhananjayd@kpit.com>
* sh.h: Define HARD_REGNO_RENAME_OK
* 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.
Kaz Kojima [Fri, 14 Jun 2002 09:49:18 +0000 (09:49 +0000)]
sh.md (jump): Emit jump insn.
* config/sh/sh.md (jump): Emit jump insn.
(call_pcrel): Get pattern of the result of gen_call_site.
(call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.
* 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.
J"orn Rennecke [Thu, 13 Jun 2002 19:23:28 +0000 (19:23 +0000)]
Individual processor configurations for sh-elf / sh-linux:
gcc:
* 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.
(SELECT_SH4_NOFPU, SELECT_SH4_SINGLE_ONLY, SELECT_SH4): Likewise.
(SELECT_SH4_SINGLE, SELECT_SH5_64, SELECT_SH5_64_NOFPU): Likewise.
(SELECT_SH5_32, SELECT_SH5_32_NOFPU, SELECT_SH5_COMPACT): Likewise.
(SELECT_SH5_COMPACT_NOFPU): Likewise.
(TARGET_SWITCHES): Use them.
(TARGET_CPU_DEFAULT): Define if not already defined.
(TARGET_DEFAULT): Use it.
(LINK_DEFAULT_CPU_EMUL): Value now depends on TARGET_CPU_DEFAULT.
* config/sh/t-linux (MULTILIB_OPTIONS): Use MULTILIB_ENDIAN.
* config/sh/t-monolib: New file.
bfd:
config.bfd: Add support for sh[1234]l*-*-elf* | sh3el*-*-elf*,
sh[1234]*-elf*.
ld:
* configure.tgt: Add support for sh[1234]*le*-*-elf, sh[1234]*-*-elf.
Still outstanding:
config.sub:
* config.sub: Add support for sh[12], sh3e, sh[1234]le, sh3ele,
shle, sh[1234]le, sh3ele, sh64le.
Akim Demaille [Thu, 13 Jun 2002 16:46:01 +0000 (18:46 +0200)]
parse.y (class_declaration, [...]): Make sure all their rules have an action...
2002-06-13 Akim Demaille <akim@epita.fr>
* parse.y (class_declaration, interface_declaration): Make sure
all their rules have an action, in order to avoid meaningless `$$
= $1' and their type clashes.
Jeff Law [Thu, 13 Jun 2002 16:14:55 +0000 (10:14 -0600)]
emit-rtl.c (static_regno_reg_rtx): Define.
* 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
init_regs.
* 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.
Gabriel Dos Reis [Thu, 13 Jun 2002 12:40:54 +0000 (12:40 +0000)]
diagnostic.c (output_format): Recognize "%H" as a format specifier for a location_t.
* diagnostic.c (output_format): Recognize "%H" as a format
specifier for a location_t.
(text_specifies_location): New function.
(diagnostic_set_info): Use it.
Jeff Law [Thu, 13 Jun 2002 12:24:00 +0000 (06:24 -0600)]
alias.c (argument_registers): Remove.
* 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
init_alias_once_per_function.
* caller-save.c (init_caller_save): Use gen_rtx_INSN instead of
starting a sequence and emitting an INSN.
Neil Booth [Thu, 13 Jun 2002 06:25:28 +0000 (06:25 +0000)]
cpplib.c (end_directive): Handle line skipping.
* 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.
Geoffrey Keating [Wed, 12 Jun 2002 22:57:45 +0000 (22:57 +0000)]
gengtype.h (xvasprintf): New prototype.
* 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.
* 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.
Jan Hubicka [Wed, 12 Jun 2002 14:51:09 +0000 (16:51 +0200)]
i386.md (shift patterns): Use (TARGET_SHIFT1 || optimize_size) to decide whether emit the short opcode.
* i386.md (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.
Zack Weinberg [Wed, 12 Jun 2002 01:36:13 +0000 (01:36 +0000)]
config.gcc: Make the name of the extra-modes file adjustable by target stanzas.
* config.gcc: Make the name of the extra-modes file adjustable
by target stanzas.
(s390x, strongarm, xscale stanzas): Use this facility.
* configure.in: Update to match.
* configure: Regenerate.
Gabriel Dos Reis [Tue, 11 Jun 2002 23:11:34 +0000 (23:11 +0000)]
objc-act.c (warn_with_ivar): Adjust calls to diagnostic_count_error.
* objc/objc-act.c (warn_with_ivar): Adjust calls to
diagnostic_count_error.
(warn_with_method): Likewise.
* diagnostic.h (warnings_are_errors_message): New field of
diagnostic_context.
(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
diagnostics.
(diagnostic_initialize): Initialize
warnings_are_errors_message field.
f/
2002-06-12 Gabriel Dos Reis <gdr@codesourcery.com>
* bad.c (ffebad_start_): Adjust calls to
diagnostic_count_error.
Jan Hubicka [Tue, 11 Jun 2002 19:58:12 +0000 (21:58 +0200)]
i386.c (x86_promote_QImode): Set for Athlon
* 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
(TARGET_FAST_PREFIX): define.
* i386.md (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.
J.T. Conklin [Tue, 11 Jun 2002 17:54:27 +0000 (17:54 +0000)]
configure.target: Set os_include_dir to config/os/qnx/qnx6.1 under *-qnx6.[12]*.
2002-06-11 J.T. Conklin <jtc@acorntoolworks.com>
Benjamin Kosnik <bkoz@redhat.com>
* configure.target: Set os_include_dir to config/os/qnx/qnx6.1
under *-qnx6.[12]*.
* configure.in: Add support for *-qnx6.[12]*.
* configure: Regenerate.
* config/os/qnx, config/os/qnx/qnx6.1, config/os/qnx/qnx6.1/bits:
New directories.
* config/os/qnx/qnx6.1/bits/ctype_base.h, ctype_inline.h,
ctype_noninline.h, os_defines.h: New files.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r54518
* 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.
(ASM_OUTPUT_SPECIAL_POOL_ENTRY): Likewise.
(ASM_OUTPUT_POOL_EPILOGUE): Remove.
(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.
* s390.md (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.
* s390.md (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.
David S. Miller [Tue, 11 Jun 2002 12:22:48 +0000 (05:22 -0700)]
Delete SEQUENCE rtl usage outside of reorg and ssa passes.
2002-06-05 David S. Miller <davem@redhat.com>
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
emit_insns_foo.
* 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/alpha.md (setjmp receiver splitter): Avoid
emitting no insns.
* config/arm/arm.c (arm_finalize_pic): Use get_insns instead of
gen_sequence.
(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):
Likewise.
* config/ia64/ia64.c (spill_restore_mem): Likewise.
* config/ia64/ia64.md (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/sparc.md (current_function_calls_alloca, flat): New
attributes.
(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
enabled.
(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
comments.
(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
gen_sequence.
(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):
Likewise.
(loop_regs_update): Work with insn list instead of SEQUENCE rtl.
(product_cheap_p): Likewise, and add commentary about RTL wastage
here.
* lcm.c (optimize_mode_switching): Use get_insns instead of
gen_sequence.
* 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
SEQUENCE rtl.
* 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
hand.
Neil Booth [Tue, 11 Jun 2002 05:36:17 +0000 (05:36 +0000)]
Makefile.in: Update cppmain.o.
* Makefile.in: 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
directives.
(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.
Danny Smith [Tue, 11 Jun 2002 05:25:44 +0000 (05:25 +0000)]
gthr-win32.h: Wrap all functions in extern "C".
* gthr-win32.h: Wrap all 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_lock,__gthr_win32_mutex_trylock,
__gthr_win32_mutex_unlock): Declare.
(__gthread_once,__gthread_key_create,
__gthread_key_delete, __gthread_getspecific,
__gthread_setspecific, __gthread_mutex_init_function,
__gthread_mutex_lock,__gthread_mutex_trylock,
__gthread_mutex_unlock): Call corresponding
__gthr_win32_* extern implementations if #defined
__GTHREAD_HIDE_WIN32API.
* config/i386/t-mingw32 (LIB2FUNCS_EXTRA): Set to
$(srcdir)/config/i386/gthr-win32.c
* 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_lock,__gthr_win32_mutex_trylock,
__gthr_win32_mutex_unlock): New functions, based on
static inlines in gthr-win32.h.
Zack Weinberg [Mon, 10 Jun 2002 22:35:56 +0000 (22:35 +0000)]
Makefile.in (MACHMODE_H): Add @extra_modes_file@.
* Makefile.in (MACHMODE_H): Add @extra_modes_file@.
* configure.in: 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.