Age | Commit message (Collapse) | Author | Files | Lines |
|
From-SVN: r32179
|
|
* bitmap.c (bitmap_operation): Avoid using -1 for index since unsigned.
* cppinit.c (new_pending_define): Add cast to avoid warning.
* expmed.c (extract_bit_field): Likewise.
* flow.c (enum reorder_skip_type): New type.
(skip_insns_between_blcok): New it.
Rework to avoid warning about possibly undefined variable.
* function.c (assign_parms): Make thisparm_boundary unsigned.
* genrecog.c (write_switch): Cast XWINT result to int.
* lcm.c: Many static fcns and vars now #ifdef OPTIMIZE_MODE_SWITCHING.
* mips-tfile.c (init_file): Make two versions of FDR intializer:
one for MIPS and one for Alpha.
(get_tag, copy_object): Add casts to avoid warnings.
* optabs.c (init_one_libfunc): Cast NAME to (char *).
* reload.c (find_reloads): Make TYPE enum reload_type.
* sbitmap.c (dump_sbitmap): J is unsigned; don't use "1L".
* unroll.c (unroll_loop): Initialize UNROLL_NUMBER.
* varasm.c (compare_constant_1): Add cast to avoid warning.
* config/alpha/alpha.c (alpha_emit_xfloating_libcall): Cast FUNC
to (char *).
(alpha_expand_unaligned_load, alpha_expand_unaligned_store):
Cast switch operand of size to int.
(alpha_expand_epilogue): Always initialize fp_offset and sa_reg.
* config/alpha/alpha.h (INITIAL_ELIMINATION_OFFSET): Add abort
in unhandled case.
From-SVN: r32060
|
|
prologue.
* function.c (thread_prologue_and_epilogue_insns): Put a line note
after the prologue.
From-SVN: r32037
|
|
into a block which already ends with a jump.
* function.c (thread_prologue_and_epilogue_insns): Don't insert
a RETURN insn into a block which already ends with a jump.
From-SVN: r31928
|
|
* function.c (assign_temp): Change zero-sized arrays to size 1.
* integrate.c (expand_inline_function): Do not update
stack_alignment_needed
* i386.c (compute_frame_size): Remove #ifdef PREFERRED_FRAME_BOUNDARY,
add some sanity checking, remove optimization for function with
zero frame size.
From-SVN: r31898
|
|
* function.c (thread_prologue_and_epilogue_insns): Uncomment
last change.
From-SVN: r31890
|
|
a block that both jumps and falls through to the...
* function.c (thread_prologue_and_epilogue_insns): Don't delete
the edge from a block that both jumps and falls through to the
fallthru block.
From-SVN: r31878
|
|
returns unless they are jumps to the fallthru block.
* function.c (thread_prologue_and_epilogue_insns): Don't replace
jumps with returns unless they are jumps to the fallthru block.
From-SVN: r31852
|
|
From-SVN: r31847
|
|
* calls.c (compute_argument_block_size): New argument
preferred_stack_boundary.
(expand_call): update cfun->preferred_stack_boundary, update call of
compute_argument_block_size
(emit_library_call): Increate cfun->preferred_stack_boundary
to PREFERRED_STACK_BOUNDARY
(emit_library_call_value): Likewise.
* explow.c (allocate_dynamic_stack_spave): Likewise.
* function.c (prepare_function_start): Set
cfun->preferred_stack_boundary
* function.h (struct function): Add preferred_stack_boundary field.
* integrate.c (expand_inline_function): Update
cfun->preferred_stack_boundary and cfun->stack_alignment_needed.
(copy_rtx_and_substitute): Align frame to stack_alignment_needed only.
* i386.c (compute_frame_size): Use cfun->preferred_stack_boundary.
From-SVN: r31831
|
|
* flow.c (flow_delete_insn, make_edge, remove_edge): Export.
* basic-block.h: Declare them.
* emit-rtl.h (active_insn_p): New.
(next_active_insn, prev_active_insn): Use it.
* rtl.h: Declare it.
* function.c (emit_return_into_block): New.
(thread_prologue_and_epilogue_insns): Insert return insns instead
of epilogues when possible.
* jump.c (jump_optimize_1): Remove code to insert a return insn
on the fallthru to the exit block.
From-SVN: r31826
|
|
* function.c (diddle_return_value): Rework to use a callback function.
Use current_function_return_rtx if it's been set up.
(do_clobber_return_reg, clobber_return_register): New.
(do_use_return_reg, use_return_register): New.
(expand_function_end): Use them.
* stmt.c (expand_null_return): Likewise.
* function.h: Declare them.
* flow.c (mark_regs_live_at_end): Use diddle_return_value.
(mark_reg): Change arguments as appropriate for callback.
* integrate.c (expand_inline_function): Revert 19 Jan change.
From-SVN: r31791
|
|
* flow.c (find_basic_blocks): Remove do_cleanup argument.
Break out that code ...
(cleanup_cfg): ... here.
(commit_one_edge_insertion): Detect a return instruction being
emitted to an edge. Emit a barrier following; clear fallthru.
(commit_edge_insertions): Verify CFG consistency.
* function.c (expand_function_start): Kill unused variable.
(expand_function_end): Likewise.
(thread_prologue_and_epilogue_insns): Use insert_insn_on_edge
to insert the epilogue.
* gcse.c (gcse_main): Adjust for find_basic_blocks change.
(delete_null_pointer_checks): Likewise.
* output.h: Likewise.
* reg-stack.c (reg_to_stack): Likewise.
* toplev.c (rest_of_compilation): Likewise. Run
thread_prologue_and_epilogue_insns after rebuilding the CFG.
From-SVN: r31676
|
|
* emit-rtl.c (unshare_all_rtl): Unshare virtual parameters too.
Use unshare_all_rtl_1.
(unshare_all_rtl_again): New function.
(unshare_all_rtl_1): New function split out of unshare_all_rtl.
* function.c (purge_addressof_1): Use unshare_all_rtl_again
rather than resetting the 'used' flags ourself.
* toplev.c (rest_of_compilation): Add current_function_decl
to the unshare_all_rtl call.
* tree.h: Prototype unshare_all_rtl.
* rtl.h: Prototype unshare_all_rtl_again here.
From-SVN: r31651
|
|
* stupid.c: Die die die.
* Makefile.in (OBJS): Remove stupid.o.
(stupid.o): Likewise.
* except.c (emit_eh_context): Don't emit USEs for stupid.
* explow.c (probe_stack_range): Likewise.
* flags.h (obey_regdecls): Remove.
* flow.c (find_basic_blocks): Don't run try_merge_blocks
when not optimizing.
(life_analysis): Limit data collection when not optimizing.
(mark_regs_live_at_end): Always mark the return value registers.
(mark_used_regs): Remove dummy RETURN case.
(print_rtl_with_bb): Don't consult obey_regdecls.
* function.c (use_variable, use_variable_after): Remove.
(assign_parms): Consult optimize not obey_regdecls.
(expand_function_start): Don't emit USEs for stupid.
(expand_function_end): Likewise.
* global.c (build_insn_chain): Export.
* integrate.c (expand_inline_function): Kill return-value USE
handling code.
* jump.c (jump_optimize_1): Do simple jump optimizations and
dead code elimination.
(calculate_can_reach_end): Remove check_deleted argument.
(delete_insn): Patch out insns even when not optimizing.
* local-alloc.c (block_alloc): Don't do tying when not optimizing.
* rtl.h (use_variable, use_variable_after): Remove declarations.
(build_insn_chain): Declare.
* stmt.c (expand_value_return): Don't emit USEs for stupid.
(expand_end_bindings): Likewise.
(expand_decl): Likewise. Consult optimize not obey_regdecls.
* toplev.c (obey_regdecls): Remove.
(rest_of_compilation): Don't set it. Kill stupid in favour of
flow1, local-alloc, and reload.
(main): Don't set obey_regdecls.
* config/nextstep.c (handle_pragma): Likewise.
* alpha/alpha.md (allocate_stack): Don't emit USEs for stupid.
* arm/arm.h (CONDITIONAL_REGISTER_USAGE): Don't fix reg 0 for stupid.
From-SVN: r31499
|
|
* eh-common.h: PROTO -> PARAMS.
* emit-rtl.c: Likewise.
* errors.c: Likewise.
* errors.h: Likewise.
* except.c: Likewise.
* except.h: Likewise.
* explow.c: Likewise.
* expmed.c: Likewise.
* expr.c: Likewise.
* expr.h: Likewise.
* final.c: Likewise.
* fix-header.c: Likewise.
* flow.c: Likewise.
* fold-const.c: Likewise.
* function.c: Likewise.
* function.h: Likewise.
* gcc.c: Likewise.
* gcov-io.h: Likewise.
* gcov.c: Likewise.
* gcse.c: Likewise.
From-SVN: r31419
|
|
conditionals guarding use.
* calls.c (emit_call_1): Wrap varaible `struct_value_size_rtx' in
macro conditionals guarding use.
* dwarf2out.c: Include "tm_p.h".
* function.c (locate_and_pad_parm): Mark parameter with
ATTRIBUTE_UNUSED.
(expand_function_end): Likewise for variable `context'.
* reorg.c (make_return_insns): Wrap prototype in macro HAVE_return.
cp:
* call.c: If GATHER_STATISTICS, declare `n_build_method_call'.
From-SVN: r31398
|
|
as truth value.
* elfos.h (ASM_OUTPUT_LIMITED_STRING): Add parentheses around
assignment used as truth value.
* function.c (assign_temp): Mark parameter `dont_promote' with
ATTRIBUTE_UNUSED. Wrap variable `unsignedp' with macro
PROMOTE_FOR_CALL_ONLY.
* genrecog.c (write_subroutine): Mark variable `operands' with
ATTRIBUTE_UNUSED.
* optabs.c (prepare_cmp_insn): Mark parameter `align' with
ATTRIBUTE_UNUSED.
* sdbout.c (sdbout_init): Likewise for parameter `asm_file'.
(sdbout_begin_block, sdbout_end_block): Likewise for `file'.
* toplev.c (note_deferral_of_defined_inline_function): Likewise
for `decl'.
From-SVN: r31293
|
|
* builtins.c (expand_builtin_strlen): Initialize variable `icode'.
* calls.c (expand_call): Likewise for
`old_stack_arg_under_construction'.
* cpphash.c (macroexpand): Likewise for `args' and `rest_zero'.
* function.c (pad_to_arg_alignment): Likewise for `save_var' and
`save_constant'.
* gcc.c (execute): Likewise for `ut' and `st'.
* genattrtab.c (attr_rtx): Likewise for `rt_val'.
* genopinit.c (gen_insn): Likewise for `m1', `m2' and `op'.
* jump.c (jump_optimize_1): Likewise for `temp2'.
* local-alloc.c (block_alloc): Likewise for `r1'.
* loop.c (recombine_givs): Likewise for `life_start' and `life_end'.
* reg-stack.c (check_asm_stack_operands): Likewise for `clobber_reg'.
(subst_asm_stack_regs): Likewise for `clobber_reg' and `clobber_loc'.
* regmove.c (fixup_match_1): Likewise for `insn_const', `dst_node'
and `set2'.
* reload.c (find_reloads): Likewise for `goal_alternative_number'
and `goal_earlyclobber'.
* scan-decls.c (scan_decls): Likewise for `prev_id_end'.
* sdbout.c (sdbout_one_type): Likewise for `member_scl'.
* stupid.c (stupid_life_analysis): Likewise for `chain'.
* unroll.c (copy_loop_body): Likewise for `copy'.
* varasm.c (output_constructor): Likewise for `byte'.
ch:
* actions.c (update_else_range_for_int_const): Initialize
variables `lowval' and `highval'.
(update_else_range_for_range): Likewise for `low_range_val' and
`high_range_val'.
cp:
* class.c (warn_hidden): Initialize variable `fndecl'.
From-SVN: r31207
|
|
address plus offset in register is a valid...
* function.c (update_temp_slot_address): Handle case where sum of
temporary address plus offset in register is a valid address.
From-SVN: r31153
|
|
* alias.c (nonlocal_reference_p): Add else for disjoint ifs.
* flow.c (find_use_as_address): Likewise.
* function.c (fixup_var_refs_1): Likewise.
(walk_fixup_memory_subreg, fixup_stack_1): Likewise.
* jump.c (invert_exp, redirect_exp): Likewise.
* loop.c (replace_call_address): Likewise.
(count_nonfixed_reads): Likewise.
* rtlanal.c (modified_between_p): Likewise.
(modified_in_p, volatile_insn_p, volatile_refs_p): Likewise.
(side_effects_p, replace_regs, jmp_uses_reg_or_mem): Likewise.
* unroll.c (remap_split_bivs): Likewise.
From-SVN: r31103
|
|
From-SVN: r31033
|
|
* Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
* function.c (insert_block_after_note): Remove.
(retrofit_block): Likewise.
(identify_blocks): Fix indentation.
(reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a
NOTE_INSN_BLOCK_BEG or NOTE_INSN_BLOCK_END.
* function.h (insert_block_after_note): Remove prototype.
(retrofit_block): Likewise.
* integrate.c (expand_inline_function): Don't call
find_loop_tree_blocks. Use expand_start_bindings_and_block, not
just expand_start_bindings. Use the block_map to remap old
NOTE_BLOCKs to new ones.
(integrate_decl_tree): Keep track of remapped blocks.
* integrate.h (struct inline_remap): Add block_map.
* stmt.c (expand_fixup): Don't try to retrofit_blocks. Just set
NOTE_BLOCK on the notes.
(expand_start_bindings): Rename to ...
(expand_start_bindings_and_block): Add parameter. Set NOTE_BLOCK.
(expand_end_bindings): Set NOTE_BLOCK.
* toplev.c (rest_of_compilation): In function-at-a-time-mode,
reconstruct the BLOCK tree.
* tree.h (expand_start_bindings): Macroize. Call ...
(expand_start_bindings_and_block): New function.
* optimize.c (struct inline_data): Remove scope_stmt.
(remap_block): Don't use insert_block_after_note. Don't update
scope_stmt.
(expand_call_inline): Don't update scope_stmt.
(optimize_function): Don't initialize scope_stmt.
* semantics.c (expand_stmt): Set NOTE_BLOCK for newly emitted
NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END notes.
From-SVN: r30982
|
|
* function.c (retrofit_block): Abort if we don't find a suitable insn.
(insert_block_after_note): Abort if we don't have a previous block.
Remove FN parameter.
* function.h: Adjust.
* tree.c (walk_tree): Walk operand subtrees in forward order.
* optimize.c (expand_call_inline): Likewise.
(optimize_function): Initialize id->scope_stmt to something useful.
(remap_block): Assume id->scope_stmt has a useful value.
From-SVN: r30965
|
|
* function.c (PREFERRED_STACK_BOUDNARY): Provide default value.
(assign_stack_local_1): Limit alignment to PREFERRED_STACK_BOUNDARY,
update stack_alignment_needed.
(prepare_function_start): Initialize stack_alignment_needed
* function.h (struct function): Add field stack_alignment_needed.
From-SVN: r30958
|
|
* function.h (insert_block_after_note): Declare.
* function.c (insert_block_after_note): Split out from ...
(retrofit_block): ... here.
From-SVN: r30776
|
|
* c-common.c (enum attrs): Add A_NO_LIMIT_STACK.
(init_attributes): Add A_NO_LIMIT_STACK.
(decl_attributes): Handle A_NO_LIMIT_STACK.
* c-decl.c (duplicate_decls): Handle DECL_NO_LIMIT_STACK.
* explow.c (allocate_dynamic_stack_space) [!HAVE_allocate_stack]:
Handle stack bounds checking.
* flags.h (flag_stack_check): Use the word 'probe' rather than
'check', because the flag doesn't actually cause any checking to
be done.
* function.c (expand_function_start): Set
current_function_limit_stack.
* function.h (struct function): Add limit_stack.
(current_function_limit_stack): Define.
* invoke.texi (Code Gen Options): Document new options.
* rtl.h: Declare stack_limit_rtx.
* toplev.c (stack_limit_rtx): New variable.
(decode_f_option): Handle new options -fstack-limit-register=REG,
-fstack-limit-symbol=IDENT, -fno-stack-limit.
(main): Add stack_limit_rtx as GC root.
* tree.h (DECL_NO_LIMIT_STACK): New macro.
(struct tree_decl): New member no_limit_stack.
* config/rs6000/rs6000.c (rs6000_allocate_stack_space): Handle
stack_limit_rtx.
* config/rs6000/rs6000.md (allocate_stack): Handle stack_limit_rtx.
(conditional_trap+1): Get new mnemonic correct.
(conditional_trap+2): New pattern for DImode traps.
* config/m68k/m68k.c (output_function_prologue): Handle
stack_limit_rtx.
* config/m68k/m68k.md (trap): New insn.
(conditional_trap): New insn.
* md.texi (Standard Names): Document `trap' and
`conditional_trap'.
* optabs.c (gen_cond_trap): Use start_sequence()/end_sequence()
so a cc0 setter doesn't get emitted at some random place in the
function.
* config/i960/i960.md (trap): New insn.
(conditional_trap): New expander.
(conditional_trap+1, conditional_trap+2): New insns for signed
and unsigned cases.
* config/i960/i960.c (i960_function_prologue): Use
STARTING_FRAME_OFFSET. Handle stack_limit_rtx.
Co-Authored-By: Greg McGary <gkm@gnu.org>
From-SVN: r30771
|
|
* except.h (struct eh_entry): Add goto_entry_p.
(eh_region_from_symbol): Remove prototype.
* except.c (find_func_region_from_symbol): New function.
(emit_cleanup_handler): Likewise.
(eh_region_from_symbol): Make it static.
(add_new_handler): Verify the argument.
(find_func_region): Update comment.
(expand_eh_region_end): Expand handlers here, rater than waiting
until expand_leftover_cleanups or start_all_catch.
(expand_leftover_cleanups): Don't expand here.
(expand_start_all_catch): Or here.
(expand_rethrow): Check the return value from find_func_region.
* function.c (expand_function_end): Emit the catch_clauses.
From-SVN: r30576
|
|
* explow.c (hard_function_value): Add outgoing argument.
* expr.h (hard_function_value): Declare it.
* calls.c (expand_call, emit_library_call_value): Update callers.
* function.c (aggregate_value_p): Ditto.
(diddle_return_value): Must look at the outgoing registers
on archs with register windows.
From-SVN: r30550
|
|
* function.c (diddle_return_value): Set REG_FUNCTION_VALUE_P as
needed.
From-SVN: r30519
|
|
return value is supposed to be in a register.
* function.c (diddle_return_value): Only clal hard_function_value
when the return value is supposed to be in a register.
From-SVN: r30497
|
|
suitable for use in the USE/CLOBBER insn.
* function.c (diddle_return_value): Use hard_function_value to
get an rtx suitable for use in the USE/CLOBBER insn.
From-SVN: r30494
|
|
* cse.c (delete_trivially_dead_insns): Replace alloca with
xmalloc/xcalloc.
* except.c (update_rethrow_references): Likewise.
(init_eh_nesting_info): Likewise.
* function.c (identify_blocks): Likewise.
* gcse.c (dump_hash_table): Likewise.
* graph.c (print_rtl_graph_with_bb): Likewise.
* loop.c (combine_movables): Likewise.
(move_movables): Likewise.
(count_loop_regs_set): Likewise.
(strength_reduce): Likewise.
* profile.c (compute_branch_probabilities): New function, split
out from ...
(branch_prob): Here. Replace alloca with xmalloc/xcalloc.
* regclass.c (regclass): Likewise.
* regmove.c (regmove_optimize): Likewise.
* toplev.c (compile_file): Likewise.
(main): Don't mess with the stack rlimit.
From-SVN: r30445
|
|
From-SVN: r30416
|
|
instead.
From-SVN: r30414
|
|
argument's alignment is greater than STACK_BOUNDARY.
* function.c (pad_to_arg_alignment): Only update argument_pad
if the argument's alignment is greater than STACK_BOUNDARY.
From-SVN: r30405
|
|
* function.c (diddle_return_value): New.
(expand_function_end): Use it.
* stmt.c (expand_null_return): Likewise.
(expand_value_return): Likewise.
* reg-stack.c (subst_stack_regs_pat): Handle clobbers at top-level.
* reload1.c (reload): Don't remove return value clobbers.
From-SVN: r30401
|
|
Fri Oct 29 15:25:07 1999 Arnaud Charlet <charlet@ACT-Europe.FR>
* gcov.c (DIR_SEPARATOR): Provide default.
(output_data): Add test for MS-DOS format absolute filename.
(fancy_abort): Correct program name.
(open_files): Open all files in binary mode.
* libgcc2.c (__bb_exit_func): Likewise.
* profile.c (init_branch_prob): Specify binary when opening files.
* flags.h (flag_unwind_tables): New decl.
* toplev.c (flag_unwind_table): New definition.
(f_options): Add -funwind-tables.
(decode_g_option): Clarify warning when unknown -g option is given.
(rest_of_compilation): If inside an inlined external function,
pretend we are just being declared.
* dwarf2out.c (dwarf2out_do_frame): Check -funwind_tables.
(dwarf2out_frame_finish): Likewise.
Fri Oct 29 06:32:44 1999 Geoffrey Keating <geoffk@cygnus.com>
* flow.c (propagate_block): When the last reference to a label
before an ADDR_VEC is deleted because the reference is a dead
store, delete the ADDR_VEC.
Fri Oct 29 07:44:26 1999 Vasco Pedro <vp@di.fct.unl.pt>
* fold-const.c (merge_ranges): In not in0, but in1, handle
upper bounds equal like subset case.
Thu Oct 28 19:22:24 1999 Douglas Rupp <rupp@gnat.com>
* dbxout.c (dbxout_parms): Generate a second stabs line for parameters
passed in a register but moved to the stack.
Thu Oct 28 19:12:57 1999 Sam Tardieu <tardieu@act-europe.fr>
* gcc.c (pass_exit_codes, greatest_status): New variables.
(struct option_map): Add entry for "--pass-exit-codes".
(execute): Update greatest_status if error.
(display_help): Add documentation for -pass-exit-codes.
(process_command): Handle -pass-exit-codes.
(main): Look at pass_exit_codes and greatest_status on call to exit.
Thu Oct 28 18:06:50 1999 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* reload.c (find_reloads): Refine test for no input reload
case to not includes reloads emitted after insn.
* function.c (find_temp_slots_from_address): Handle sum involving
a register that points to a temp slot.
(update_temp_slot_address): Make recursive call if both old and
new are PLUS with a common operand.
* calls.c (expand_call): Mark temp slot for result as having
address taken.
* rtlanal.c (reg_referenced_p, case IF_THEN_ELSE): New case.
* gcc.c (process_command): Add standard_exec_prefix with "GCC"
component as well as "BINUTILS".
* integrate.h (copy_rtx_and_substitute): New arg, FOR_LHS.
* integrate.c (copy_rtx_and_substitute): Likewise.
(expand_inline_function, integrate_parm_decls, integrate_decl_tree):
All callers changed.
* unroll.c (inital_reg_note_copy, copy_loop_body): Likewise.
* dbxout.c (dbxout_type, case INTEGER_TYPE_NODE): If can use
gdb extensions, write size of type; also be more consistent
in using references when this is a subtype.
* pa.md (extv, extzv, insv): Use define_expand to reject constant
that is out of range.
* loop.c (unknown_constant_address_altered): New variable.
(prescan_loop): Initialize it.
(note_addr_stored): Set it for RTX_UNCHANGING_P MEM.
(invariant_p, case MEM): Remove handling for volatile and readony;
check new variable if readonly.
(check_dbra_loop): Chdeck unknown_constant_address_altered.
* cse.c (canon_hash, case MEM): Do not record if BLKmode.
(addr_affects_sp_p): Removed from note_mem_written and only
define #ifdef AUTO_INC_DEC.
* alpha.c (input_operand, case ADDRESSOF): Treat as REG.
* regclass.c (record_reg_classes): Properly handle register move
directions.
* varasm.c (initializer_constant_valid_p, case MINUS_EXPR):
Don't think valid if both operands are invalid.
(struct constant_descriptor): New field RTL.
(mark_const_hash_entry): Mark it.
(record_constant{,_rtx}): Initialize it.
(output_constant_def): Allocate RTL in permanent obstack and
save in table.
({record,compare}_constant_1): Modes must match for
CONSTRUCTOR of ARRAY_TYPE.
* c-common.h (initializer_constant_valid_p): Delete decl from here.
* output.h (initializer_constant_valid_p): Move decl to here.
* c-common.c (initializer_constant_valid_p): Delete function from here.
* varasm.c (initializer_constant_valid_p): Move function to here.
* tree.h (STRIP_SIGN_NOPS): New macro.
* fold-const.c (optimize_minmax_comparison): New function.
(invert_truthvalue, case WITH_RECORD_EXPR): New case.
(fold): Use STRIP_SIGN_NOPS instead of STRIP_TYPE_NOPS.
(fold, case EQ_EXPR): Call optimize_minmax_comparison and add
cases with ABS_EXPR, NEGATE_EXPR, PLUS_EXPR, MINUS_EXPR, and
widening conversions.
(fold, case LE_EXPR): Rework changing unsigned to signed comparisons
to look at size of mode, not precision of type; also add missing cases.
(optimize_bit_field_compare, decode_field_reference): Don't try to
optimize COMPONENT_REF of a PLACEHOLDER_EXPR.
* dwarf2out.c (ctype.h): Include.
(dwarf2out_set_demangle_name_func): New function.
(size_of_line_info): Deleted.
(output_line_info): Compute size of line info table from difference
of labels.
(base_type_die, add_name_attribute): Call demangle function, if any.
(field_byte_offset): Use bits per word for variable length fields.
(gen_array_type_die): Add array name.
(gen_subprogram_die): Ignore DECL_INLINE if -fno-inline.
(dwarf2out_add_library_unit_info): New function.
* explow.c (set_stack_check_libfunc): New function.
(stack_check_libfunc): New static variable.
(probe_stack_range): Allow front-end to set up a libfunc to call.
* combine.c (simplify_comparison): When making comparison in wider
mode, check for having commuted an AND and a SUBREG.
(contains_muldiv): New function.
(try_combine): Call it when dividing a PARALLEL.
(simplify_rtx, case TRUNCATE): Don't remove for umulsi3_highpart.
(simplify_comparison, case ASHIFTRT): Recognize sign-extension of
a PLUS.
(record_value_for_reg): If TEM is a binary operation with two CLOBBERs,
use one of the CLOBBERs instead.
(if_then_else_cond): If comparing against zero, just return thing
being compared.
* optabs.c (expand_abs): If machine has MAX, ABS (x) is MAX (x, -x).
Don't generate shifts and subtract if have conditional arithmetic.
* rtl.h (delete_barrier): New declaration.
* jump.c (jump_optimize): Set up to handle conditional call.
In conditional arithmetic case, handle CALL_INSN followed by a BARRIER.
(delete_barrier): New function.
* rtl.c (read_rtx): Call fatal if bad RTL code; check for bad mode.
* recog.c (nonmemory_operand): Accept ADDRESSOF.
* tree.c (build_type_attribute_variant): Push to obstack of
ttype around type_hash_canon call.
* expr.c (placeholder_list): Move decl to file scope.
(expand_expr): Don't force access to volatile just because its
address is taken.
If ignoring reference operations, just expand the operands.
(expand_expr, case COMPONENT_REF): Propagate
EXPAND_CONST_ADDRESS to recursive call when expanding inner.
Refine test for using bitfield operations vs pointer punning.
(expand_expr, case CONVERT_EXPR): If converting to
BLKmode UNION_TYPE from BLKmode, just return inner object.
Use proper mode in store_field call.
Properly set sizes of object to store and total size in store_field
call for convert to union.
(expand_expr, case ARRAY_REF): If OP0 is in a register, put it in
memory (like for ADDR_EXPR). Also, don't put constant in register if
we'll want it in memory.
(readonly_fields_p): New function.
(expand_expr, case INDIRECT_REF): Call it if LHS.
(expand_assignment): Handle a RESULT_DECL where
DECL_RTL is a PARALLEL.
(do_jump, case WITH_RECORD_EXPR): New case.
(get_inner_reference): Always go inside a CONVERT_EXPR
and NOP_EXPR if both modes are the same.
(store_field): Use bitfield operations if size of bitsize is not same
as size of RHS's type.
Check for bitpos not a multiple of alignment in BLKmode case.
Do block move in largest possible alignment.
(store_constructor): Set BITSIZE to -1 for variable size and properly
in case of array of BLKmode.
(expand_expr_unaligned): New function.
(do_compare_and_jump): Call it.
* mips/iris5.h (SWITCHES_NEED_SPACES): New macro.
* collect2.c (main): Only allow -ofoo if SWITCHES_NEED_SPACES
does not include 'o'.
* function.c (instantiate_virtual_regs_1, case SET): Handle case where
both SET_DEST and SET_SRC reference a virtual register.
(gen_mem_addressof): Copy RTX_UNCHANGING_P from new REG to old REG.
* integrate.c (expand_inline_function): Handle case of setting
virtual stack vars register (from built in setjmp); when parameter
lives in memory, expand virtual_{stack_vars,incoming_args}_rtx early.
(subst_constant): Add new parm, MEMONLY.
(expand_inline_function, integrate_parm_decls): Pass new parm.
(integrate_decl_tree): Likewise.
(copy_rtx_and_substitute, case MEM): Do copy RTX_UNCHANGING_P.
(try_constants): Call subst_constants twice, with MEMONLY 0 and 1.
(copy_rtx_and_substitute, case SET): Add explicit calls to
copy_rtx_and_substitute for both sides.
* stmt.c (expand_asm_operands): Don't use TREE_STRING_LENGTH for
constraints.
(pushcase{,_range}): Convert to NOMINAL_TYPE after checking for
within INDEX_TYPE, instead of before.
(fixup_gotos): Use f->target_rtl, not the next insn,
since latter may be from a later fixup.
(expand_value_return): Correctly convert VAL when promoting function
return; support RETURN_REG being a PARALLEL.
(expand_return): When checking for result in regs and having
cleanup, consider PARALLEL in DECL_RTL as being in regs.
From-SVN: r30299
|
|
from -Wuninitialized and put it under -W.
Sun Oct 31 13:32:15 CET 1999 Marc Lehmann <pcg@goof.com>
* toplev.c (rest_of_compilation): Seperate the setjmp/vfork clobber
warning from -Wuninitialized and put it under -W.
* function.c (uninitialized_vars_warning): Warn only when the
corresponding flag is set.
From-SVN: r30294
|
|
From-SVN: r30265
|
|
From-SVN: r30260
|
|
* expr.c (emit_push_insn): New argument alignment_pad.
Update all callers. Adjust stack pointer based on alignment pad.
* function.c (pad_to_arg_alignment): New argument alignment_pad.
Update all callers. Track alignment_pad if boundary > PARM_BOUNDARY.
(locate_and_pad_parm): New argument alignment_pad. Update all
callers.
* expr.h (emit_push_insn): Update prototype.
(locate_and_pad_parm): Update prototype.
* calls.c (arg_data): Add new field alignment_pad.
(initialize_argument_information): Initialize alignment_pad.
From-SVN: r30257
|
|
* except.c (free_eh_nesting_info): Free the info itself.
* function.c (free_after_compilation): Don't free NULL.
* gcse.c (alloc_pre_mem): Free the temp_bitmap, too.
(pre_edge_insert): Free inserted.
* stmt.c (free_stmt_status): Don't free NULL.
From-SVN: r30255
|
|
Co-Authored-By: Richard Henderson <rth@cygnus.com>
From-SVN: r30201
|
|
* calls.c: Include tm_p.h later, so everything we need is defined.
* expr.c: Likewise.
* function.c: Likewise.
* except.c: Include tm_p.h.
* sparc.c: Likewise.
(dwarf2out_cfi_label): Don't prototype.
(check_return_regs, epilogue_renumber,
ultra_cmove_results_ready_p, ultra_fpmode_conflict_exists,
ultra_find_type, ultra_build_types_avail, ultra_flush_pipeline,
ultra_rescan_pipeline_state, set_extends, ultra_code_from_mask,
ultra_schedule_insn): Add static prototype.
(data_segment_operand, text_segment_operand): Call itself with the
proper number of arguments.
(sparc_flat_save_restore, sparc_v8plus_shift): Constify a char*.
* sparc.h: Move all declarations to sparc-protos.h.
(SELECT_RTX_SECTION): Pass a missing MODE argument to
symbolic_operand.
* sparc/sysv4.h (SELECT_RTX_SECTION): Likewise.
* config/svr4.h (text_section, ctors_section, dtors_section): Add
Prototypes.
(ASM_OUTPUT_SECTION_NAME, UNIQUE_SECTION,
ASM_FINISH_DECLARE_OBJECT, ASM_OUTPUT_LIMITED_STRING,
ASM_OUTPUT_ASCII): Constify a char*.
* sparc-protos.h: New file for sparc prototypes.
cp:
* expr.c: Include tm_p.h.
From-SVN: r30122
|
|
* function.c (record_insns, contains): Always declare and define.
(record_insns): Mark with ATTRIBUTE_UNUSED.
From-SVN: r30121
|
|
* cpplib.c (if_directive_nameo): Add static prototype.
* cse.c (cse_insn): Remove unused variable `p'.
* except.c (create_rethrow_ref, push_entry,
receive_exception_label, new_eh_region_entry, find_func_region,
clear_function_eh_region, process_nestinfo): Add static prototypes.
(get_reg_for_handler): Hide definition.
(process_nestinfo): Initialize variable `extra_handlers'.
* expr.h (expand_builtin_longjmp): Add extern prototype.
* final.c (final_addr_vec_align, align_fuzz): Add static prototypes.
* function.c (prepare_function_start): Likewise.
(pop_function_context_from): Mark parameter `context' with
ATTRIBUTE_UNUSED.
(push_temp_slots_for_block, flush_addressof): Hide definition.
* gcov.c (init_arc, reverse_arcs, create_program_flow_graph,
solve_program_flow_graph, calculate_branch_probs,
function_summary, main, fancy_abort): Add prototypes.
* gen-protos.c (add_hash, parse_fn_proto, main): Likewise.
(add_hash): Constify a char*.
* ggc-common.c (ggc_mark_rtx_ptr, ggc_mark_tree_ptr,
ggc_mark_tree_varray_ptr, ggc_mark_tree_hash_table_ptr,
ggc_mark_string_ptr, ggc_mark_tree_hash_table_entry): Add prototypes.
* integrate.c (expand_inline_function_eh_labelmap): Likewise.
* lists.c (free_list, zap_lists): Likewise.
From-SVN: r29783
|
|
use this)
From-SVN: r29514
|
|
* functiion.h (struct function): Add x_whole_function_mode_p.
(retrofit_block): Declare.
* function.c (retrofit_block): New function.
(identify_blocks): Add assertions. Allow an incomplete set of
block notes if we're still generating code for the function.
* integrate.c: Include loop.h.
(expand_inline_function): Call find_loop_tree_blocks to map block
notes to blocks when in whole-function mode. Use retrofit_block
to insert new BLOCKs for the inlined function, rather than
insert_block.
* stmt.c (expand_fixup): Likewise. Don't use pushlevel/polevel.
* Makefile.in (integrate.o): Depend on loop.h.
From-SVN: r29487
|
|
* function.c (identify_blocks): Don't shadow a variable in an
outer scope.
* integrate.c (integrate_decl_tree): Don't use pushlevel,
pushdecl, or poplevel to build up the new BLOCK tree.
(expand_inline_function): Likewise.
(integrate_parm_decls): Likewise.
From-SVN: r29453
|