Janis Johnson [Thu, 3 Jul 2003 20:15:48 +0000 (20:15 +0000)]
fnptr-by-value-1_main.c: New file.
* gcc.dg/compat/fnptr-by-value-1_main.c: New file.
* gcc.dg/compat/fnptr-by-value-1_x.c: New file.
* gcc.dg/compat/fnptr-by-value-1_y.c: New file.
* gcc.dg/compat/struct-align-1.h: New file.
* gcc.dg/compat/struct-align-1_main.c: New file.
* gcc.dg/compat/struct-align-1_x.c: New file.
* gcc.dg/compat/struct-align-1_y.c: New file.
* gcc.dg/compat/struct-align-2.h: New file.
* gcc.dg/compat/struct-align-2_main.c: New file.
* gcc.dg/compat/struct-align-2_x.c: New file.
* gcc.dg/compat/struct-align-2_y.c: New file.
Jan Hubicka [Thu, 3 Jul 2003 18:40:29 +0000 (20:40 +0200)]
basic-block.h (create_basic_block, [...]): Kill.
* basic-block.h (create_basic_block, merge_blocks_nomove): Kill.
* cfgcleanup.c (merge_blocks): Rename to merge_blocks_move.
(merge_blocks_move_predecessor_nojumps,
merge_blocks_move_successor_nojumps): Use merge_blocks.
(try_optimize_cfg): Use merge_blocks_move.
* cfgrtl.c (create_basic_block): Rename to rtl_create_basic_block.
(merge_blocks_nomove): Rename to rtl_merge_blocks.
(cfg_layout_create_basic_block): New.
(rtl_can_merge_blocks): New.
(cfg_layout_split_block): Do not alloc aux by hand.
* cfghooks.h (cfg_hooks): Add create_basic_block, can_merge_blocks_p,
merge_blocks.
(create_basic_block, can_merge_blocks_p, merge_blocks): New macros.
* cfglayout.c (cfg_layout_duplicate_bb): Do not allocate aux by hand.
* cfgloopmanip.c (loop_split_edge_with): Likewise.
* ifcvt.c (merge_if_block): Use merge_blocks_nomove.
* basic-block.h (basic_block_def): Add field 'rbi'.
* bb-reorder.c (find_traces, rotate_loop, mark_bb_visited,
find_traces_1_round, copy_bb, connect_traces): Update use of rbi.
* cfg.c (entry_exit_blocks): Add new field.
* cfglayout.c: Include alloc-pool.h;
(cfg_layout_pool): New.
(record_effective_endpoints, fixup_reorder_chain,
fixup_fallthru_exit_predecessor, cfg_layout_duplicate_bb): Update use
of rbi.
(cfg_layout_initialize_rbi): New function.
(cfg_layout_initialize): Use it.
(cfg_layout_finalize): Clear rbi fields.
* cfglayout.h (RBI): Kill.
(cfg_layout_initialize_rbi): Declare.
* cfgloopmanip.c (copy_bbs): Use rbi.
(record_exit_edges): Likewise.
(duplicate_loop_to_header_edge): Likewise.
* cfgrtl.c (cfg_layout_create_basic_block): Use
cfg_layout_initialize_rbi.
(cfg_layout_split_block): Use rbi.
(cfg_layout_delete_block): Likewise.
* loop-init.c (loop_optimizer_finalize): Likewise.
* loop-unswitch.c (unswitch_loop): Likewise.
* tracer.c (seen, tail_duplicate, layout_superblocks): Likewise.
* cfgrtl.c: Update comments.
(try_redirect_by_replacing_jump): New argument.
(redirect_branch_edge): Break out from ...
(rtl_redirect_edge_and_branch): ... this one.
(update_cfg_after_block_merging): Break out from ...
(rtl_merge_blocks): ... this one.
(cfg_layout_split_edge): New.
(cfg_layout_merge_blocks): New.
(cfg_layout_can_merge_blocks_p): New.
(cfg_layout_redirect_edge_and_branch): Reorganize.
(cfg_layout_rtl_cfg_hooks): Fill in.
(cfg_layout_delete_block): Kill barriers.
* cfganal.c (can_fallthru): Deal with exit blocks
* cfglayout.c (cfg_layout_function_header): New function
(record_effective_endpoints): Record function header.
(fixup_reorder_chain): Fixup dead jumptables; place header
* basic-block.h (CLEANUP_CFGLAYOUT): New flag.
* bb-reorder.c (cfg_layout_initialize): Update call.
* cfgcleanup.c (try_optimize_cfg): Supress optimizations of fallthru
edges in cfglayout mode.
* cfglayout.c (cleanup_unconditional_jumps): Kill.
(cfg_layout_initialize): Kill agrument loops; use cfgcleanup.
* cfglayout.h (cfg_layout_initialize): Update prototype.
* cfgloop.h (CP_INSIDE_CFGLAYOUT): Kill.
* cfgloopmanip.c (loop_split_edge_with): Use split_edge.
* flow.c (propagate_block): Do not crash when basic block ends
by first insn in the chain.
* loop-init.c (loop_optimizer_init): First enter cfglayout mode; later
do loop discovery.
* tracer.c (tracer): Update call of cfg_layout_initialize.
Mark Mitchell [Thu, 3 Jul 2003 18:13:44 +0000 (18:13 +0000)]
call.c (build_scoped_method_call): Use convert_to_void.
* call.c (build_scoped_method_call): Use convert_to_void.
(build_method_call): Likewise.
* class.c (check_field_decls): Remove dead code.
* cvt.c (convert_from_reference): Remove OFFSET_TYPE handling.
* decl2.c (grok_array_decl): Remove dead code.
(arg_assoc_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
as pointer-to-member representation.
* init.c (build_offset_ref): Tidy.
(build_vec_delete_1): Use convert_to_void.
* mangle.c (write_type): Avoid relying on POINTER_TYPE over OFFSET_TYPE
as pointer-to-member representation.
Eric Botcazou [Thu, 3 Jul 2003 07:30:03 +0000 (09:30 +0200)]
re PR rtl-optimization/11381 (volatile memory access optimized away)
PR optimization/11381
* simplify-rtx.c (simplify_relational_operation): Check that
two equal operands have no side-effects before simplifying
the comparison.
Jeff Law [Thu, 3 Jul 2003 05:42:57 +0000 (23:42 -0600)]
expr.c (do_store_flag): Remove special case folding for single bit tests.
* expr.c (do_store_flag): Remove special case folding for
single bit tests. Instead call back into the commonized folder
routine.
* fold-const.c (fold_single_bit_test): New function, mostly
extracted from do_store_flag, with an additional case extracted
from fold.
(fold): Call fold_single_bit_test appropriately.
* tree.h (fold_single_bit_test): Prototype.
* system.h: Include filenames.h.
(IS_DIR_SEPARATOR, IS_ABSOLUTE_PATHNAME): Don't define.
(DIR_SEPARATOR, DIR_SEPARATOR_2): If not already defined,
define based on HAVE_DOS_BASED_FILE_SYSTEM.
* config/i386/xm-cygwin.h, config/i386/xm-djgpp.h
* config/i386/xm-mingw32.h: Don't define
HAVE_DOS_BASED_FILE_SYSTEM,
DIR_SEPARATOR, or DIR_SEPARATOR_2.
* doc/hostconfig.texi: Update to match.
* cppfiles.c, gcc.c, gensupport.c, protoize.c,
config/i386/cygwin.h:
Use IS_ABSOLUTE_PATH throughout.
* gcc.c (DIR_UP): Delete, unused.
* protoize.c (IS_SAME_PATH): Define in terms of
FILENAME_CMP.
(is_abspath): Delete.
java:
* jcf-path.c: Don't default-define PATH_SEPARATOR nor
DIR_SEPARATOR.
Use FILENAME_CMP.
* jcf-write.c: Don't default-define DIR_SEPARATOR.
* jcf.h: Delete COMPARE_FILENAMES definition.
h8300.c (compute_mov_length): Fix the length of loading CONST0_RTX (SFmode).
* config/h8300/h8300.c (compute_mov_length): Fix the length of
loading CONST0_RTX (SFmode).
* config/h8300/h8300.h (CONST_DOUBLE_OK_FOR_LETTER_P): Change
'G' to CONST0_RTX (SFmode).
* config/h8300/h8300.md (movsf_h8300): Change the first
constraint to 'G'.
(movsf_h8300h): Likewise.
Eric Botcazou [Wed, 2 Jul 2003 07:41:07 +0000 (09:41 +0200)]
re PR rtl-optimization/11210 (optimizer drops conditional with typecast from signed to unsigned char)
PR optimization/11210
* expr.c (handled_component_p) [NOP_EXPR]: Add ??? note
about the behaviour with regard to bitfields.
* fold-const (decode_field_reference): Record outermost type in
case the expression is a NOP. Strip all NOPs. Set the signedness
to that of the outermost type (if any) when the bitsize is equal
to the size of the type.
mips.c (machine_function): Add new fields: ignore_hazard_length_p and all_noreorder_p.
* config/mips/mips.c (machine_function): Add new fields:
ignore_hazard_length_p and all_noreorder_p.
(mips_flag_delayed_branch): New variable.
(override_options): Treat '/' as an operand punctuation character.
Set up mips_flag_delayed_branch.
(print_operand): Handle '/'.
(mips_output_function_prologue): Put the whole function in
.set noreorder and .set nomacro if all_noreorder_p is true.
(mips_output_function_epilogue): End the noreorder/nomacro sequence.
(mips16_optimize_gp): Remove "first insn" parameter.
(mips16_lay_out_constants): New function, split out from mips_reorg.
(mips_avoid_hazard, mips_avoid_hazards): New functions.
(mips_reorg): For mips16 code, call mips16_lay_out_constant
and (optionally) mips16_optimize. If TARGET_EXPLICIT_RELOCS,
do delayed-branch scheduling followed by hazard detection.
(mips_adjust_insn_length): Only account for hazards if
!ignore_hazard_length_p.
(mips_output_load_label): Add a nop to the o32 sequence if
the target suffers from load delays.
(mips_output_conditional_branch): Add %/ to the end of branches.
(mips_output_division): Fill the branch delay slot with %#.
* config/mips/mips.md: Remove redundant '%*' from mips16 branch
instructions. End all other %* branches with %/.
(ffssi2, ffsdi2): Fix lengths.
(truncdisi2, truncdihi2, truncdiqi2): Add store attributes.
(fix_truncdfsi2_macro): Turn off .set nomacro if appropriate.
(fix_truncsfsi2_macro): Likewise.
(mov_lwl): Set hazard to "none".
(ashldi3_internal): Fill the branch delay slot with %#.
(ashrdi3_internal, lshrdi3_internal): Likewise.
(exception_receiver): Explicitly set $28.
(hazard_nop): New pattern.
iris5.h (SET_FILE_NUMBER): Moved here from iris3.h.
* config/mips/iris5.h (SET_FILE_NUMBER): Moved here from iris3.h.
Undef before redefinition.
(LABEL_AFTER_LOC): Likewise.
(DEFAULT_SIGNED_CHAR): Likewise.
(ASM_OUTPUT_ASCII): Moved here from iris4.h.
Fix IRIX spelling.
Jan Hubicka [Wed, 2 Jul 2003 00:17:38 +0000 (02:17 +0200)]
cgraph.c (cgraph_mark_needed_node, [...]): Use next_needed field instead of aux to maintain the queue.
* cgraph.c (cgraph_mark_needed_node, cgraph_varpool_mark_needed_node,
cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
Use next_needed field instead of aux to maintain the queue.
* cgraph.h (cgraph_node): Add next_needed.
(cgraph_varpool_node): Add next_needed; remove aux.
* cgraphunit.c (cgraph_finalize_compilation_unit): Use next_needed.
Jan Hubicka [Wed, 2 Jul 2003 00:14:44 +0000 (02:14 +0200)]
cgraphunit.c (cgraph_finalize_function): Set finalized.
* cgraphunit.c (cgraph_finalize_function): Set finalized.
(cgraph_finalize_function): Do not examine inlinablility.
(cgraph_finalize_compilation_unit): Do it here.
* cgraph.h (cgraph_local_info): Add finalized field.
Jan Hubicka [Wed, 2 Jul 2003 00:12:10 +0000 (02:12 +0200)]
decl2.c (defer_fn): Set DECL_DEFER_OUTPUT.
* decl2.c (defer_fn): Set DECL_DEFER_OUTPUT.
(finish-file): Do not process function with DECL_DEFER_OUTPUT clear;
clear DECL_DEFER_OUTPUT once function is processed; avoid flags
massaging.
* cp-tree.h (DECL_NEEDED_P): Support unit-at-a-time
(expand_or_defer_fn): Declare.
(lower_function): Declare.
* decl.c (start_cleanup_fn): Use expand_or_defer_fn.
* decl2.c: Include cgraph.h and varpool.h
(maybe_emit_vtables): Make explicit instantations as needed.
(mark_member_pointers, lower_function): New functions.
(finish_file): Do unit-at-a-time.
* method.c (synthesize_method): Use expand_or_defer_fn.
* optimize.c (maybe_clone_body): Use expand_or_defer_fn.
* parser.c (cp_parser_function_definition_after_decl): Use
expand_or_defer_fn.
* pt.c (instantiate_decl): Likewise.
* semantics.c: Include cgraph.h
(expand_or_defer_fn): Break out from ...
(expand_body): ... here; deal with unit-at-a-time.
* cp-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION,
LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Define.
* gcc_release (BRANCH): Rename to...
(CVSBRANCH): ...new macro, and use BRANCH for the variant users
will see.
(FTP_BRANCH): For snapshots, include ${BRANCH} in the last part
of the directory name.
Use .snapshot_date-${BRANCH} instead of .snapshot_date.
Bruno Haible [Tue, 1 Jul 2003 04:04:13 +0000 (04:04 +0000)]
re PR middle-end/6578 (-ftrapv doesn't catch multiplication overflow)
2003-06-30 Bruno Haible <bruno@clisp.org>
PR middle-end/6578
* libgcc2.c (__subvsi3): Remove simplification that would not work
when subtracting -0x80000000.
(__subvdi3): Remove simplification that would return a wrong result.
(__mulvsi3): Fix overflow check.
(__absvdi2): Fix simplification that would return a wrong result.
(__mulvdi3): Fix overflow check.
Jeff Law [Tue, 1 Jul 2003 02:04:11 +0000 (20:04 -0600)]
stmt.c (any_pending_cleanups): Lose argument THIS_CONTOUR, it was always passed in the value '1'.
* stmt.c (any_pending_cleanups): Lose argument THIS_CONTOUR, it
was always passed in the value '1'. Simplify body appropriately.
* tree.h (any_pending_cleanups): Corresponding changes.
* calls.c: (expand_call): Corresponding changes.
Hartmut Penner [Mon, 30 Jun 2003 22:01:00 +0000 (22:01 +0000)]
2084.md: New file.
* config/s390/2084.md: New file.
* config/s390/s390.md: Include it.
* config/s390/s390.c (s390_adjust_priority): New function.
(TARGET_SCHED_ADJUST_PRIORITY): Define.
(s390_first_cycle_multipass_dfa_lookahead): New function.
(TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define.
(s390_sched_reorder2): New function.
(TARGET_SCHED_REORDER2): Define.
(s390_adjust_cost): Support PROCESSOR_2084_Z990 cpu type.
(s390_issue_rate): Likewise.