rth [Sat, 11 May 2002 00:32:01 +0000 (00:32 +0000)]
* final.c (end_final): Tidy whitespace. Don't honor flag_pack_struct.
Convert integers constants as needed. Replace "nwords" field with
"sizeof_bb".
(final): Save profile data if cfun->arc_profile, not profile_arc_flag.
* function.h: Fix typo in comment.
* libgcc2.c (struct bb): Replace "nwords" with "sizeof_bb".
janis [Fri, 10 May 2002 20:48:32 +0000 (20:48 +0000)]
* loop.c: (PREFETCH_EXTREME_DIFFERENCE, PREFETCH_BEFORE_LOOP): New.
(PREFETCH_CONDITIONAL): Renamed from PREFETCH_NOT_ALWAYS.
(struct prefetch_info): Fix spelling of member bytes_accessed.
(emit_prefetch_instructions): Make dump messages more regular;
restructure code to add more dump messages; use new macros for
heuristics. (There are no code generation changes in any of this).
davem [Fri, 10 May 2002 12:50:11 +0000 (12:50 +0000)]
2002-05-09 David S. Miller <davem@redhat.com>
* rtl.h (struct rtx_def): Document unchanging and in_struct flags
more accurately.
(INSN_ANNULLED_BRANCH_P): Only valid for JUMP_INSN and CALL_INSN, fix
comment.
(INSN_FROM_TARGET_P): Valid also for CALL_INSN.
* doc/rtl.texi: Document these macros more accurately.
* recog.c (whole file): Only mess with INSN_ANNULLED_BRANCH_P for
JUMP_INSNs and CALL_INSNs.
* resource.c (whole file): Only mess with INSN_ANNULLED_BRANCH_P
or INSN_FROM_TARGET_P if the code is appropriate.
marekm [Fri, 10 May 2002 12:22:36 +0000 (12:22 +0000)]
* config/avr/avr.c (print_operand): Check that addr is a SYMBOL_REF
before using SYMBOL_REF_FLAG (addr).
* config/avr/avr-protos.h (avr_io_address_p): Declare.
* config/avr/avr.c (io_address_p): Rename to avr_io_address_p.
Make non-static. Update all callers.
* config/avr/avr.md (*cbi, *sbi, *sbix_branch, *sbix_branch_bit7):
New insns to clear/set/test a single bit in I/O address space.
law [Thu, 9 May 2002 17:58:09 +0000 (17:58 +0000)]
* i386.md (type attribute): Add "rotate" for rotate insns.
(rotate insns): Set type to "rotate".
(various attributes and function units): Treat rotate like shift.
(pent_pair attribute): Only rotates by one bit position are
pairable.
(sbb insns): Explicitly set pent_pair attribute on a couple
that were missing it.
amylaar [Thu, 9 May 2002 17:41:56 +0000 (17:41 +0000)]
* sh.c (sh_builtin_saveregs): If starting with an odd fp register,
make sure that buffer starts on odd word address.
(sh_va_arg): Skip odd fp registers when reading a double precision
value.
jason [Thu, 9 May 2002 17:27:37 +0000 (17:27 +0000)]
* typeck.c (get_member_function_from_ptrfunc): Reorganize.
Use subtraction rather than a bitmask to get the index.
* cvt.c (cp_convert_to_pointer): Bail on an error_mark_node.
hubicka [Thu, 9 May 2002 15:07:00 +0000 (15:07 +0000)]
* final.c (end_final): Use C trees to output data structures for profiling.
* Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h
(profile.o): New dependency profile.h
(final.o): New dependency profile.h
* profile.h: New file. New global structure profile_info.
* final.h (count_edges_instrumented_now): Declare.
(current_function_cfg_checksum): Declare.
(function_list): New structure.
(functions_head, functions_tail): New static variables.
(end_final): Emits more data, removed some -ax stuff.
(final): Stores function names and chcksums.
* gcov-io.h (__write_gcov_string): New function.
(__read_gcov_string): New function.
* gcov.c (read_profile): New function.
(create_program_flow_graph): Uses read_profile instead of reading
da_file.
(read_files): Removed da_file checking, it's done by read_profile now.
* libgcc2.c (bb_function_info): New structure.
(bb): New field in structure, removed some -ax stuff.
(__bb_exit_func): Changed structure of da_file.
* profile.c (count_edges_instrumented_now): New global variable.
(current_function_cfg_checksum): New global variable.
(max_counter_in_program): New global variable.
(get_exec_counts): New function.
(compute_checksum): New function.
(instrument_edges): Sets count_edges_instrumented_now.
(compute_branch_probabilities): Uses get_exec_counts instead of
reading da_file.
(branch_prob): Calls compute_checksum and writes extra data to bbg_file.
(init_branch_prob): Removed da_file checking, done in get_exec_counts
now.
(end_branch_prob): Removed da_file checking, done in get_exec_counts
now.
* gcov.texi: Updated information about gcov file format.
hubicka [Thu, 9 May 2002 12:54:19 +0000 (12:54 +0000)]
* final.c (end_final): Use C trees to output data structures for profiling.
* Makefile.in (LIBGCC_DEPS): Added missing dependency on gcov-io.h
(profile.o): New dependency profile.h
(final.o): New dependency profile.h
* profile.h: New file. New global structure profile_info.
* final.h (count_edges_instrumented_now): Declare.
(current_function_cfg_checksum): Declare.
(function_list): New structure.
(functions_head, functions_tail): New static variables.
(end_final): Emits more data, removed some -ax stuff.
(final): Stores function names and chcksums.
* gcov-io.h (__write_gcov_string): New function.
(__read_gcov_string): New function.
* gcov.c (read_profile): New function.
(create_program_flow_graph): Uses read_profile instead of reading
da_file.
(read_files): Removed da_file checking, it's done by read_profile now.
* libgcc2.c (bb_function_info): New structure.
(bb): New field in structure, removed some -ax stuff.
(__bb_exit_func): Changed structure of da_file.
* profile.c (count_edges_instrumented_now): New global variable.
(current_function_cfg_checksum): New global variable.
(max_counter_in_program): New global variable.
(get_exec_counts): New function.
(compute_checksum): New function.
(instrument_edges): Sets count_edges_instrumented_now.
(compute_branch_probabilities): Uses get_exec_counts instead of
reading da_file.
(branch_prob): Calls compute_checksum and writes extra data to bbg_file.
(init_branch_prob): Removed da_file checking, done in get_exec_counts
now.
(end_branch_prob): Removed da_file checking, done in get_exec_counts
now.
* gcov.texi: Updated information about gcov file format.
davem [Thu, 9 May 2002 10:38:44 +0000 (10:38 +0000)]
2002-05-07 David S. Miller <davem@redhat.com>
* config/sparc/sparc.h (TARGET_BUGGY_QP_LIB): Define to zero.
* config/sparc/sol2.h (TARGET_BUGGY_QP_LIB): Override to one.
* config/sparc/sparc.c (emit_soft_tfmode_libcall): If the Qp
library implementation clobbers the output before the inputs
are fully consumed, use stack temporary for the output.
janis [Wed, 8 May 2002 22:37:21 +0000 (22:37 +0000)]
* rtl.h (RTL_FLAG_CHECK*): Add an argument for the macro name,
and use it in all invocations of these macros. Clean up comments.
* rtl.c (rtl_check_failed_flag): Add an argument for the name
of the flag access macro whose check failed.
* doc/rtl.texi (Flags): Document additional flag uses.
neil [Wed, 8 May 2002 21:21:19 +0000 (21:21 +0000)]
PR preprocessor/6521
* cppfiles.c (handle_missing_header): Don't do anything
different for <> includes.
doc:
* cppopts.texi: Update documentation for -MG.
neil [Wed, 8 May 2002 21:02:31 +0000 (21:02 +0000)]
* cpplex.c (cpp_interpret_charconst): Truncate as well as
sign-extend.
doc:
* cpp.texi: Clarify multichar charconst valuation.
testsuite:
* gcc.dg/cpp/charconst-4.c: More tests.
nickc [Wed, 8 May 2002 15:01:13 +0000 (15:01 +0000)]
Do not allow big-endian/little-endian multilibs to override arm/thumb
multilibs.
Do not build hardware floating point multilibs, nor apcs-26 multilibs for
the Thumb.
hubicka [Wed, 8 May 2002 09:17:27 +0000 (09:17 +0000)]
* cfglayout.c (function_tail_eff_head): Rename to ...
(function_footer): ... this one.
(unlink_insn_chain): New functions.
(label_for_bb): Only call block_label and emit debug message.
(record_effective_endpoints): Actually unlink the headers and footers.
(fixup_reorder_cahin): Re-insert the unlinked sequences.
(cfg_layout_duplicate_bb): Use duplicate_insn_chain.
* cfglayout.h (struct reorder_block_def): New fields footer/header;
remove eff_head/eff_end.
* rtl.h (set_first_insn): Declare.
* emit-rtl.c (set_first_insn): New function.
* cfglayout.c (fixup_reorder_chain): Dump duplicated
(cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
cfg_layout_duplicate_bb): New global function.
(duplicate_insn_chain): New static function.
* cfglayout.h (cfg_layout_can_duplicate_bb_p, cfg_layout_rerirect_edge,
cfg_layout_duplicate_bb): Declare.
(struct reorder_block_def): Add "original" field.
* emit-rtl.c (emit_copy_of_insn_after): New function.
* rtl.h (emit_copy_of_insn_after): Declare.
rsandifo [Wed, 8 May 2002 08:01:35 +0000 (08:01 +0000)]
* config/mips/mips.md: Name the unspecs with define_constant.
(*HILO_delay): Rename to 'hilo_delay' (no star).
(reload_indi): Replace gen_rtx_UNSPEC with gen_hilo_delay.
(reload_outdi, reload_outsi): Likewise.
tromey [Wed, 8 May 2002 01:41:41 +0000 (01:41 +0000)]
Fix for PR java/1200:
* gjavah.c (throwable_p): New function.
(decode_signature_piece): Use it. A `WeakReference' isn't the
same as a `jweak'.
Include hashtab.h.
(gcjh_streq): New function.
mmitchel [Tue, 7 May 2002 18:50:53 +0000 (18:50 +0000)]
* configure.in (AC_TYPE_PID_T): Use it.
* configure: Regenerated.
* getruntime.c: Include <sys/types.h>.
* waitpid.c: Likewise. Use pid_t, not int, as the type of "pid".
mmitchel [Tue, 7 May 2002 14:42:29 +0000 (14:42 +0000)]
* config/rs6000/sysv4.h (SUBTARGET_SWITCHES): Add -mwindiss.
(LINK_START_SPEC): Handle it.
(LINK_OS_SPEC): Likewise.
(CPP_SPEC): Likewise.
(STARTFILE_SPEC): Likewise.
(LIB_SPEC): Likewise.
(ENDFILE_SPEC): Likewise. Do not assume crtsavres.o is used on
all platforms.
(CRTSAVRES_DEFAULT_SPEC): New macro.
(LIB_WINDISS_SPEC): New macro.
(CPP_OS_WINDISS_SPEC): Likewise.
(STARTFILE_WINDISS_SPEC): Likewise.
(ENDFILE_WINDISS_SPEC): Likewise.
(LINK_START_WINDISS_SPEC): Likewise.
(LINK_OS_WINDISS_SPEC): Likewise.
* config/rs6000/windiss.h: New file.
tromey [Tue, 7 May 2002 03:32:01 +0000 (03:32 +0000)]
Fix for PR java/5941:
* parse.y (finish_for_loop): Set SUPPRESS_UNREACHABLE_ERROR for
loop update expression.
(java_complete_lhs): Use SUPPRESS_UNREACHABLE_ERROR.
* java-tree.h (SUPPRESS_UNREACHABLE_ERROR): New macro.
sayle [Mon, 6 May 2002 22:59:38 +0000 (22:59 +0000)]
PR opt/3995
* fold-const.c (sign_bit_p): New function.
(fold) [EQ_EXPR]: Use this to convert (A & C) == 0 into A >= 0 and
(A & C) != 0 into A < 0, when constant C is the sign bit of A's type.
Reapply fold when converting (A & C) == C into (A & C) != 0.
(fold_binary_op_with_conditional_arg): Fix typo in comment.
testsuite/
* gcc.c-torture/execute/20020506-1.c: New test case.