Age | Commit message (Collapse) | Author | Files | Lines |
|
From-SVN: r206289
|
|
This patch applies the rule that functions defined in FOO.c must be
declared in FOO.h. One of the worst offenders in the code base is
tree.h, unsurprisingly.
The patch creates several new headers: attribs.h calls.h fold-const.h
gcc-symtab.h print-rtl.h print-tree.h stmt.h stor-layout.h stringpool.h
tree-nested.h tree-object-size.h varasm.h.
Functions in each corresponding .c file got moved to those headers and
others that already existed. I wanted to make this patch as mechanical
as possible, so I made no attempt to fix problems like having
build_addr defined in tree-inline.c. I left that for later.
There were some declarations that I could not move out of tree.h
because of header poisoning or the use of target macros. We forbid the
inclusion of things like expr.h from FE files. While that's a
reasonable idea, the FE file *still* manage to at expr.c functionality
because the declarations they want to use were defined in tree.h.
The affected files are builtins.h, emit-rtl.h and expr.h.
If that functionality is allowed to be accessed from the FEs,
then I will later move those functions out of expr.c into tree.c.
I have moved these declarations to the bottom of tree.h so they
are easy to identify later.
There is a namespace collision with libcpp. The file gcc/symtab.c
cannot use gcc/symtab.h because the #include command picks up
libcpp/include/symtab.h first. So I named this file gcc-symtab.h
for now.
Finally, I added a new header to PLUGIN_HEADERS to account for the
tree.h refactoring. I did not add all headers factored out of tree.h
because it is unclear (and impossible to tell) what plugins need.
This adds the one header used by the plugins in the testsuite.
This will be changing quite dramatically as we progress with the header
refactoring.
This patch should offer some minimal incremental build advantages
by reducing the size of tree.h. Changes that would otherwise
affected tree.h, will now go to other headers which are less
frequently included.
* tree.h: Include fold-const.h.
(aggregate_value_p): Moved to function.h.
(alloca_call_p): Moved to calls.h.
(allocate_struct_function): Moved to function.h.
(apply_tm_attr): Moved to attribs.h.
(array_at_struct_end_p): Moved to expr.h.
(array_ref_element_size): Moved to tree-dfa.h.
(array_ref_low_bound): Moved to tree-dfa.h.
(array_ref_up_bound): Moved to tree.h.
(assemble_alias): Moved to cgraph.h.
(bit_from_pos): Moved to stor-layout.h.
(build_addr): Moved to tree-nested.h.
(build_duplicate_type): Moved to tree-inline.h.
(build_fold_addr_expr): Moved to fold-const.h.
(build_fold_addr_expr_with_type): Moved to fold-const.h.
(build_fold_addr_expr_with_type_loc): Moved to fold-const.h.
(build_fold_indirect_ref): Moved to fold-const.h.
(build_fold_indirect_ref_loc): Moved to fold-const.h.
(build_personality_function): Moved to tree.h.
(build_range_check): Moved to fold-const.h.
(build_simple_mem_ref): Moved to fold-const.h.
(build_simple_mem_ref_loc): Moved to fold-const.h.
(build_tm_abort_call): Moved to trans-mem.h.
(byte_from_pos): Moved to stor-layout.h.
(call_expr_flags): Moved to calls.h.
(can_move_by_pieces): Moved to expr.h.
(categorize_ctor_elements): Moved to expr.h.
(change_decl_assembler_name): Moved to gcc-symtab.h.
(combine_comparisons): Moved to fold-const.h.
(complete_ctor_at_level_p): Moved to tree.h.
(component_ref_field_offset): Moved to tree-dfa.h.
(compute_builtin_object_size): Moved to tree-object-size.h.
(compute_record_mode): Moved to stor-layout.h.
(constant_boolean_node): Moved to fold-const.h.
(constructor_static_from_elts_p): Moved to varasm.h.
(cxx11_attribute_p): Moved to attribs.h.
(debug_body): Moved to print-tree.h.
(debug_find_tree): Moved to tree-inline.h.
(debug_fold_checksum): Moved to fold-const.h.
(debug_head): Moved to print-tree.h.
(debug_head): Moved to print-tree.h.
(debug_raw): Moved to print-tree.h.
(debug_tree): Moved to print-tree.h.
(debug_vec_tree): Moved to print-tree.h.
(debug_verbose): Moved to print-tree.h.
(debug_verbose): Moved to print-tree.h.
(decl_attributes): Moved to attribs.h.
(decl_binds_to_current_def_p): Moved to varasm.h.
(decl_default_tls_model): Moved to varasm.h.
(decl_replaceable_p): Moved to varasm.h.
(div_if_zero_remainder): Moved to fold-const.h.
(double_int mem_ref_offset): Moved to fold-const.h.
(dump_addr): Moved to print-tree.h.
(element_precision): Moved to machmode.h.
(expand_dummy_function_end): Moved to function.h.
(expand_function_end): Moved to function.h.
(expand_function_start): Moved to function.h.
(expand_label): Moved to stmt.h.
(expr_first): Moved to tree-iterator.h.
(expr_last): Moved to tree-iterator.h.
(finalize_size_functions): Moved to stor-layout.h.
(finish_builtin_struct): Moved to stor-layout.h.
(finish_record_layout): Moved to stor-layout.h.
(fixup_signed_type): Moved to stor-layout.h.
(fixup_unsigned_type): Moved to stor-layout.h.
(flags_from_decl_or_type): Moved to calls.h.
(fold): Moved to fold-const.h.
(fold_abs_const): Moved to fold-const.h.
(fold_binary): Moved to fold-const.h.
(fold_binary_loc): Moved to fold-const.h.
(fold_binary_to_constant): Moved to fold-const.h.
(fold_build1): Moved to fold-const.h.
(fold_build1_initializer_loc): Moved to fold-const.h.
(fold_build1_loc): Moved to fold-const.h.
(fold_build1_stat_loc): Moved to fold-const.h.
(fold_build2): Moved to fold-const.h.
(fold_build2_initializer_loc): Moved to fold-const.h.
(fold_build2_loc): Moved to fold-const.h.
(fold_build2_stat_loc): Moved to fold-const.h.
(fold_build3): Moved to fold-const.h.
(fold_build3_loc): Moved to fold-const.h.
(fold_build3_stat_loc): Moved to fold-const.h.
(fold_build_call_array): Moved to fold-const.h.
(fold_build_call_array_initializer): Moved to fold-const.h.
(fold_build_call_array_initializer_loc): Moved to fold-const.h.
(fold_build_call_array_loc): Moved to fold-const.h.
(fold_build_cleanup_point_expr): Moved to fold-const.h.
(fold_convert): Moved to fold-const.h.
(fold_convert_loc): Moved to fold-const.h.
(fold_convertible_p): Moved to fold-const.h.
(fold_defer_overflow_warnings): Moved to fold-const.h.
(fold_deferring_overflow_warnings_p): Moved to fold-const.h.
(fold_fma): Moved to fold-const.h.
(fold_ignored_result): Moved to fold-const.h.
(fold_indirect_ref): Moved to fold-const.h.
(fold_indirect_ref_1): Moved to fold-const.h.
(fold_indirect_ref_loc): Moved to fold-const.h.
(fold_read_from_constant_string): Moved to fold-const.h.
(fold_real_zero_addition_p): Moved to fold-const.h.
(fold_single_bit_test): Moved to fold-const.h.
(fold_strip_sign_ops): Moved to fold-const.h.
(fold_ternary): Moved to fold-const.h.
(fold_ternary_loc): Moved to fold-const.h.
(fold_unary): Moved to tree-data-ref.h.
(fold_unary_ignore_overflow): Moved to fold-const.h.
(fold_unary_ignore_overflow_loc): Moved to fold-const.h.
(fold_unary_loc): Moved to fold-const.h.
(fold_unary_to_constant): Moved to fold-const.h.
(fold_undefer_and_ignore_overflow_warnings): Moved to fold-const.h.
(fold_undefer_overflow_warnings): Moved to fold-const.h.
(folding_initializer): Moved to fold-const.h.
(free_temp_slots): Moved to function.h.
(generate_setjmp_warnings): Moved to function.h.
(get_attribute_name): Moved to attribs.h.
(get_identifier): Moved to stringpool.h.
(get_identifier_with_length): Moved to stringpool.h.
(get_inner_reference): Moved to tree.h.
(gimple_alloca_call_p): Moved to calls.h.
(gimplify_parameters): Moved to function.h.
(highest_pow2_factor): Moved to expr.h.
(indent_to): Moved to print-tree.h.
(init_attributes): Moved to attribs.h.
(init_dummy_function_start): Moved to function.h.
(init_function_start): Moved to function.h.
(init_inline_once): Moved to tree-inline.h.
(init_object_sizes): Moved to tree-object-size.h.
(init_temp_slots): Moved to function.h.
(init_tree_optimization_optabs): Moved to optabs.h.
(initialize_sizetypes): Moved to stor-layout.h.
(initializer_constant_valid_for_bitfield_p): Moved to varasm.h.
(initializer_constant_valid_p): Moved to varasm.h.
(int_const_binop): Moved to fold-const.h.
(internal_reference_types): Moved to stor-layout.h.
(invert_tree_comparison): Moved to fold-const.h.
(invert_truthvalue): Moved to fold-const.h.
(invert_truthvalue_loc): Moved to fold-const.h.
(is_tm_ending_fndecl): Moved to trans-mem.h.
(is_tm_may_cancel_outer): Moved to trans-mem.h.
(is_tm_pure): Moved to trans-mem.h.
(is_tm_safe): Moved to trans-mem.h.
(layout_decl): Moved to stor-layout.h.
(layout_type): Moved to stor-layout.h.
(lookup_attribute_spec): Moved to attribs.h.
(make_accum_type): Moved to stor-layout.h.
(make_decl_one_only): Moved to varasm.h.
(make_decl_rtl): Moved to tree.h.
(make_decl_rtl_for_debug): Moved to varasm.h.
(make_fract_type): Moved to stor-layout.h.
(make_or_reuse_sat_signed_accum_type): Moved to stor-layout.h.
(make_or_reuse_sat_signed_fract_type): Moved to stor-layout.h.
(make_or_reuse_sat_unsigned_accum_type): Moved to stor-layout.h.
(make_or_reuse_sat_unsigned_fract_type): Moved to stor-layout.h.
(make_or_reuse_signed_accum_type): Moved to stor-layout.h.
(make_or_reuse_signed_fract_type): Moved to stor-layout.h.
(make_or_reuse_unsigned_accum_type): Moved to stor-layout.h.
(make_or_reuse_unsigned_fract_type): Moved to stor-layout.h.
(make_range): Moved to fold-const.h.
(make_range_step): Moved to fold-const.h.
(make_sat_signed_accum_type): Moved to stor-layout.h.
(make_sat_signed_fract_type): Moved to stor-layout.h.
(make_sat_unsigned_accum_type): Moved to stor-layout.h.
(make_sat_unsigned_fract_type): Moved to stor-layout.h.
(make_signed_accum_type): Moved to stor-layout.h.
(make_signed_fract_type): Moved to stor-layout.h.
(make_signed_type): Moved to stor-layout.h.
(make_unsigned_accum_type): Moved to stor-layout.h.
(make_unsigned_fract_type): Moved to stor-layout.h.
(make_unsigned_type): Moved to stor-layout.h.
(mark_decl_referenced): Moved to varasm.h.
(mark_referenced): Moved to varasm.h.
(may_negate_without_overflow_p): Moved to fold-const.h.
(maybe_get_identifier): Moved to stringpool.h.
(merge_ranges): Moved to fold-const.h.
(merge_weak): Moved to varasm.h.
(mode_for_size_tree): Moved to stor-layout.h.
(multiple_of_p): Moved to fold-const.h.
(must_pass_in_stack_var_size): Moved to calls.h.
(must_pass_in_stack_var_size_or_pad): Moved to calls.h.
(native_encode_expr): Moved to fold-const.h.
(native_interpret_expr): Moved to fold-const.h.
(non_lvalue): Moved to fold-const.h.
(non_lvalue_loc): Moved to fold-const.h.
(normalize_offset): Moved to stor-layout.h.
(normalize_rli): Moved to stor-layout.h.
(notice_global_symbol): Moved to varasm.h.
(omit_one_operand): Moved to fold-const.h.
(omit_one_operand_loc): Moved to fold-const.h.
(omit_two_operands): Moved to fold-const.h.
(omit_two_operands_loc): Moved to fold-const.h.
(operand_equal_p): Moved to tree-data-ref.h.
(parse_input_constraint): Moved to stmt.h.
(parse_output_constraint): Moved to stmt.h.
(place_field): Moved to stor-layout.h.
(pop_function_context): Moved to function.h.
(pop_temp_slots): Moved to function.h.
(pos_from_bit): Moved to stor-layout.h.
(preserve_temp_slots): Moved to function.h.
(print_node): Moved to print-tree.h.
(print_node_brief): Moved to print-tree.h.
(print_rtl): Moved to rtl.h.
(process_pending_assemble_externals): Moved to varasm.h.
(ptr_difference_const): Moved to fold-const.h.
(push_function_context): Moved to function.h.
(push_struct_function): Moved to function.h.
(push_temp_slots): Moved to function.h.
(record_tm_replacement): Moved to trans-mem.h.
(relayout_decl): Moved to stor-layout.h.
(resolve_asm_operand_names): Moved to stmt.h.
(resolve_unique_section): Moved to varasm.h.
(rli_size_so_far): Moved to stor-layout.h.
(rli_size_unit_so_far): Moved to stor-layout.h.
(round_down): Moved to fold-const.h.
(round_down_loc): Moved to fold-const.h.
(round_up): Moved to fold-const.h.
(round_up_loc): Moved to fold-const.h.
(set_decl_incoming_rtl): Moved to emit-rtl.h.
(set_decl_rtl): Moved to tree.h.
(set_min_and_max_values_for_integral_type): Moved to stor-layout.h.
(set_user_assembler_name): Moved to varasm.h.
(setjmp_call_p): Moved to calls.h.
(size_binop): Moved to fold-const.h.
(size_binop_loc): Moved to fold-const.h.
(size_diffop): Moved to fold-const.h.
(size_diffop_loc): Moved to fold-const.h.
(size_int_kind): Moved to fold-const.h.
(stack_protect_epilogue): Moved to function.h.
(start_record_layout): Moved to stor-layout.h.
(supports_one_only): Moved to varasm.h.
(swap_tree_comparison): Moved to fold-const.h.
(tm_malloc_replacement): Moved to trans-mem.h.
(tree build_fold_addr_expr_loc): Moved to fold-const.h.
(tree build_invariant_address): Moved to fold-const.h.
(tree_binary_nonnegative_warnv_p): Moved to fold-const.h.
(tree_binary_nonzero_warnv_p): Moved to fold-const.h.
(tree_call_nonnegative_warnv_p): Moved to fold-const.h.
(tree_expr_nonnegative_p): Moved to fold-const.h.
(tree_expr_nonnegative_warnv_p): Moved to fold-const.h.
(tree_output_constant_def): Moved to varasm.h.
(tree_overlaps_hard_reg_set): Moved to stmt.h.
(tree_single_nonnegative_warnv_p): Moved to fold-const.h.
(tree_single_nonzero_warnv_p): Moved to fold-const.h.
(tree_swap_operands_p): Moved to fold-const.h.
(tree_unary_nonnegative_warnv_p): Moved to fold-const.h.
(tree_unary_nonzero_warnv_p): Moved to fold-const.h.
(update_alignment_for_field): Moved to stor-layout.h.
(use_register_for_decl): Moved to function.h.
(variable_size): Moved to rtl.h.
(vector_type_mode): Moved to stor-layout.h.
* cgraph.h: Corresponding changes.
* emit-rtl.h: Corresponding changes.
* expr.h: Corresponding changes.
* function.h: Corresponding changes.
* optabs.h: Corresponding changes.
* trans-mem.h: Corresponding changes.
Protect against multiple inclusion.
* tree-inline.h: Corresponding changes.
* tree-iterator.h: Corresponding changes.
* tree-dfa.h: Include expr.h.
* tree-ssanames.h: Include stringpool.h.
* attribs.h: New file.
* calls.h: New file.
* fold-const.h: New file.
* gcc-symtab.h: New file.
* print-rtl.h: New file.
* print-tree.h: New file.
* stmt.h: New file.
* stor-layout.h: New file.
* strinpool.h: New file.
* tree-nested.h: New file
* tree-object-size.h: New file.
* varasm.h: New file.
* Makefile.in (PLUGIN_HEADERS): Add stringpool.h.
* alias.c: Include varasm.h.
Include expr.h.
* asan.c: Include calls.h.
Include stor-layout.h.
Include varasm.h.
* attribs.c: Include stringpool.h.
Include attribs.h.
Include stor-layout.h.
* builtins.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
Include tree-object-size.h.
* calls.c: Include stor-layout.h.
Include varasm.h.
Include stringpool.h.
Include attribs.h.
* cfgexpand.c: Include stringpool.h.
Include varasm.h.
Include stor-layout.h.
Include stmt.h.
Include print-tree.h.
* cgraph.c: Include varasm.h.
Include calls.h.
Include print-tree.h.
* cgraphclones.c: Include stringpool.h.
Include function.h.
Include emit-rtl.h.
Move inclusion of rtl.h earlier in the file.
* cgraphunit.c: Include varasm.h.
Include stor-layout.h.
Include stringpool.h.
* cilk-common.c: Include stringpool.h.
Include stor-layout.h.
* combine.c: Include stor-layout.h.
* config/aarch64/aarch64-builtins.c: Include stor-layout.h.
Include stringpool.h.
Include calls.h.
* config/aarch64/aarch64.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/alpha/alpha.c: Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/arc/arc.c: Include varasm.h.
Include stor-layout.h.
Include stringpool.h.
Include calls.h.
* config/arm/arm.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/avr/avr-c.c: Include stor-layout.h.
* config/avr/avr-log.c: Include print-tree.h.
* config/avr/avr.c: Include print-tree.h.
Include calls.h.
Include stor-layout.h.
Include stringpool.h.
* config/bfin/bfin.c: Include varasm.h.
Include calls.h.
* config/c6x/c6x.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
Include stringpool.h.
* config/cr16/cr16.c: Include stor-layout.h.
Include calls.h.
* config/cris/cris.c: Include varasm.h.
Include stor-layout.h.
Include calls.h.
Include stmt.h.
* config/darwin.c: Include stringpool.h.
Include varasm.h.
Include stor-layout.h.
* config/epiphany/epiphany.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
Include stringpool.h.
* config/fr30/fr30.c: Include stor-layout.h.
Include varasm.h.
* config/frv/frv.c: Include varasm.h.
Include stor-layout.h.
Include stringpool.h.
* config/h8300/h8300.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
Include stringpool.h.
* config/i386/i386.c: Include stringpool.h.
Include attribs.h.
Include calls.h.
Include stor-layout.h.
Include varasm.h.
* config/i386/winnt-cxx.c: Include stringpool.h.
Include attribs.h.
* config/i386/winnt.c: Include stringpool.h.
Include varasm.h.
* config/ia64/ia64-c.c: Include stringpool.h.
* config/ia64/ia64.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/iq2000/iq2000.c: Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/lm32/lm32.c: Include calls.h.
* config/m32c/m32c.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/m32r/m32r.c: Include stor-layout.h.
Include varasm.h.
Include stringpool.h.
Include calls.h.
* config/m68k/m68k.c: Include calls.h.
Include stor-layout.h.
Include varasm.h.
* config/mcore/mcore.c: Include stor-layout.h.
Include varasm.h.
Include stringpool.h.
Include calls.h.
* config/mep/mep.c: Include varasm.h.
Include calls.h.
Include stringpool.h.
Include stor-layout.h.
* config/microblaze/microblaze.c: Include varasm.h.
Include stor-layout.h.
Include calls.h.
* config/mips/mips.c: Include varasm.h.
Include stringpool.h.
Include stor-layout.h.
Include calls.h.
* config/mmix/mmix.c: Include varasm.h.
Include stor-layout.h.
Include calls.h.
* config/mn10300/mn10300.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/moxie/moxie.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/msp430/msp430.c: Include stor-layout.h.
Include calls.h.
* config/nds32/nds32.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/pa/pa.c: Include stor-layout.h.
Include stringpool.h.
Include varasm.h.
Include calls.h.
* config/pdp11/pdp11.c: Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/picochip/picochip.c: Include calls.h.
Include stor-layout.h.
Include stringpool.h.
Include varasm.h.
* config/rl78/rl78.c: Include varasm.h.
Include stor-layout.h.
Include calls.h.
* config/rs6000/rs6000-c.c: Include stor-layout.h.
Include stringpool.h.
* config/rs6000/rs6000.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include print-tree.h.
Include varasm.h.
* config/rx/rx.c: Include varasm.h.
Include stor-layout.h.
Include calls.h.
* config/s390/s390.c: Include print-tree.h.
Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/score/score.c: Include stringpool.h.
Include calls.h.
Include varasm.h.
Include stor-layout.h.
* config/sh/sh-c.c: Include stringpool.h.
Include attribs.h.h.
* config/sh/sh.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/sol2-c.c: Include stringpool.h.
Include attribs.h.
* config/sol2-cxx.c: Include stringpool.h.
* config/sol2.c: Include stringpool.h.
Include varasm.h.
* config/sparc/sparc.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/spu/spu-c.c: Include stringpool.h.
* config/spu/spu.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* config/stormy16/stormy16.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/tilegx/tilegx.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/tilepro/tilepro.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/v850/v850-c.c: Include stringpool.h.
Include attribs.h.
* config/v850/v850.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include calls.h.
* config/vax/vax.c: Include calls.h.
Include varasm.h.
* config/vms/vms.c: Include stringpool.h.
* config/vxworks.c: Include stringpool.h.
* config/xtensa/xtensa.c: Include stringpool.h.
Include stor-layout.h.
Include calls.h.
Include varasm.h.
* convert.c: Include stor-layout.h.
* coverage.c: Include stringpool.h.
Include stor-layout.h.
* dbxout.c: Include varasm.h.
Include stor-layout.h.
* dojump.c: Include stor-layout.h.
* dse.c: Include stor-layout.h.
* dwarf2asm.c: Include stringpool.h.
Include varasm.h.
* dwarf2cfi.c: Include stor-layout.h.
* dwarf2out.c: Include rtl.h.
Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include function.h.
Include emit-rtl.h.
Move inclusion of rtl.h earlier in the file.
* emit-rtl.c: Include varasm.h.
* except.c: Include stringpool.h.
Include stor-layout.h.
* explow.c: Include stor-layout.h.
* expmed.c: Include stor-layout.h.
* expr.c: Include stringpool.h.
Include stor-layout.h.
Include attribs.h.
Include varasm.h.
* final.c: Include varasm.h.
* fold-const.c: Include stor-layout.h.
Include calls.h.
Include tree-iterator.h.
* function.c: Include stor-layout.h.
Include varasm.h.
Include stringpool.h.
* genattrtab.c (write_header): Emit includes for varasm.h,
stor-layout.h and calls.h.
* genautomata.c (main): Likewise.
* genemit.c: Likewise.
* genopinit.c: Likewise.
* genoutput.c (output_prologue): Likewise.
* genpeep.c: Likewise.
* genpreds.c (write_insn_preds_c): Likewise.
* gengtype.c (open_base_files): Add stringpool.h.
* gimple-expr.c: Include stringpool.h.
Include stor-layout.h.
* gimple-fold.c: Include stringpool.h.
Include expr.h.
Include stmt.h.
Include stor-layout.h.
* gimple-low.c: Include tree-nested.h.
Include calls.h.
* gimple-pretty-print.c: Include stringpool.h.
* gimple-ssa-strength-reduction.c: Include stor-layout.h.
Include expr.h.
* gimple-walk.c: Include stmt.h.
* gimple.c: Include calls.h.
Include stmt.h.
Include stor-layout.h.
* gimplify.c: Include stringpool.h.
Include calls.h.
Include varasm.h.
Include stor-layout.h.
Include stmt.h.
Include print-tree.h.
Include expr.h.
* gimplify-me.c: Include stmt.h
Include stor-layout.h
* internal-fn.c: Include stor-layout.h.
* ipa-devirt.c: Include print-tree.h.
Include calls.h.
* ipa-inline-analysis.c: Include stor-layout.h.
Include stringpool.h.
Include print-tree.h.
* ipa-inline.c: Include trans-mem.h.
Include calls.h.
* ipa-prop.c: Include expr.h.
Include stor-layout.h.
Include print-tree.h.
* ipa-pure-const.c: Include print-tree.h.
Include calls.h.
* ipa-reference.c: Include calls.h.
* ipa-split.c: Include stringpool.h.
Include expr.h.
Include calls.h.
* ipa.c: Include calls.h.
Include stringpool.h.
* langhooks.c: Include stringpool.h.
Include attribs.h.
* lto-cgraph.c: Include stringpool.h.
* lto-streamer-in.c: Include stringpool.h.
* lto-streamer-out.c: Include stor-layout.h.
Include stringpool.h.
* omp-low.c: Include stringpool.h.
Include stor-layout.h.
Include expr.h.
* optabs.c: Include stor-layout.h.
Include stringpool.h.
Include varasm.h.
* passes.c: Include varasm.h.
* predict.c: Include calls.h.
* print-rtl.c: Include print-tree.h.
* print-tree.c: Include varasm.h.
Include print-rtl.h.
Include stor-layout.h.
* realmpfr.c: Include stor-layout.h.
* reg-stack.c: Include varasm.h.
* sdbout.c: Include varasm.h.
Include stor-layout.h.
* simplify-rtx.c: Include varasm.h.
* stmt.c: Include varasm.h.
Include stor-layout.h.
* stor-layout.c: Include stor-layout.h.
Include stringpool.h.
Include varasm.h.
Include print-tree.h.
* symtab.c: Include rtl.h.
Include print-tree.h.
Include varasm.h.
Include function.h.
Include emit-rtl.h.
* targhooks.c: Include stor-layout.h.
Include varasm.h.
* toplev.c: Include varasm.h.
Include tree-inline.h.
* trans-mem.c: Include calls.h.
Include function.h.
Include rtl.h.
Include emit-rtl.h.
* tree-affine.c: Include expr.h.
* tree-browser.c: Include print-tree.h.
* tree-call-cdce.c: Include stor-layout.h.
* tree-cfg.c: Include trans-mem.h.
Include stor-layout.h.
Include print-tree.h.
* tree-complex.c: Include stor-layout.h.
* tree-data-ref.c: Include expr.h.
* tree-dfa.c: Include stor-layout.h.
* tree-eh.c: Include expr.h.
Include calls.h.
* tree-emutls.c: Include stor-layout.h.
Include varasm.h.
* tree-if-conv.c: Include stor-layout.h.
* tree-inline.c: Include stor-layout.h.
Include calls.h.
* tree-loop-distribution.c: Include stor-layout.h.
* tree-nested.c: Include stringpool.h.
Include stor-layout.h.
* tree-object-size.c: Include tree-object-size.h.
* tree-outof-ssa.c: Include stor-layout.h.
* tree-parloops.c: Include stor-layout.h.
Include tree-nested.h.
* tree-pretty-print.c: Include stor-layout.h.
Include expr.h.
* tree-profile.c: Include varasm.h.
Include tree-nested.h.
* tree-scalar-evolution.c: Include expr.h.
* tree-sra.c: Include stor-layout.h.
* tree-ssa-address.c: Include stor-layout.h.
* tree-ssa-ccp.c: Include stor-layout.h.
* tree-ssa-dce.c: Include calls.h.
* tree-ssa-dom.c: Include stor-layout.h.
* tree-ssa-forwprop.c: Include stor-layout.h.
* tree-ssa-ifcombine.c: Include stor-layout.h.
* tree-ssa-loop-ivopts.c: Include stor-layout.h.
* tree-ssa-loop-niter.c: Include calls.h.
Include expr.h.
* tree-ssa-loop-prefetch.c: Include stor-layout.h.
* tree-ssa-math-opts.c: Include stor-layout.h.
* tree-ssa-operands.c: Include stmt.h.
Include print-tree.h.
* tree-ssa-phiopt.c: Include stor-layout.h.
* tree-ssa-reassoc.c: Include stor-layout.h.
* tree-ssa-sccvn.c: Include stor-layout.h.
* tree-ssa-sink.c: Include stor-layout.h.
* tree-ssa-strlen.c: Include stor-layout.h.
* tree-ssa-structalias.c: Include stor-layout.h.
Include stmt.h.
* tree-ssa-tail-merge.c: Include stor-layout.h.
Include trans-mem.h.
* tree-ssa-uncprop.c: Include stor-layout.h.
* tree-ssa.c: Include stor-layout.h.
* tree-ssanames.c: Include stor-layout.h.
* tree-streamer-in.c: Include stringpool.h.
* tree-streamer-out.c: Include stor-layout.h.
* tree-switch-conversion.c: Include varasm.h.
Include stor-layout.h.
* tree-tailcall.c: Include stor-layout.h.
* tree-vect-data-refs.c: Include stor-layout.h.
* tree-vect-generic.c: Include stor-layout.h.
* tree-vect-loop.c: Include stor-layout.h.
* tree-vect-patterns.c: Include stor-layout.h.
* tree-vect-slp.c: Include stor-layout.h.
* tree-vect-stmts.c: Include stor-layout.h.
* tree-vectorizer.c: Include stor-layout.h.
* tree-vrp.c: Include stor-layout.h.
Include calls.h.
* tree.c: Include stor-layout.h.
Include calls.h.
Include attribs.h.
Include varasm.h.
* tsan.c: Include expr.h.
* ubsan.c: Include stor-layout.h.
Include stringpool.h.
* value-prof.c: Include tree-nested.h.
Include calls.h.
* var-tracking.c: Include varasm.h.
Include stor-layout.h.
* varasm.c: Include stor-layout.h.
Include stringpool.h.
Include gcc-symtab.h.
Include varasm.h.
* varpool.c: Include varasm.h.
* vmsdbgout.c: Include varasm.h.
* xcoffout.c: Include varasm.h.
ada/ChangeLog
* gcc-interface/decl.c: Include stringpool.h
Include stor-layout.h
* gcc-interface/misc.c: Include stor-layout.h
Include print-tree.h
* gcc-interface/trans.c: Include stringpool.h
Include stor-layout.h
Include stmt.h
Include varasm.h
* gcc-interface/utils.c: Include stringpool.h
Include stor-layout.h
Include attribs.h
Include varasm.h
* gcc-interface/utils2.c: Include stringpool.h
Include stor-layout.h
Include attribs.h
Include varasm.h
c-family/ChangeLog
* c-common.c: Include fold-const.h.
Include stor-layout.h.
Include calls.h.
Include stringpool.h.
Include attribs.h.
Include varasm.h.
Include trans-mem.h.
* c-cppbuiltin.c: Include stor-layout.h.
Include stringpool.h.
* c-format.c: Include stringpool.h.
* c-lex.c: Include stringpool.h.
Include stor-layout.h.
* c-pragma.c: Include stringpool.h.
Include attribs.h.
Include varasm.h.
Include gcc-symtab.h.
* c-pretty-print.c: Include stor-layout.h.
Include attribs.h.
* cilk.c: Include stringpool.h.
Include calls.h.
c/ChangeLog
* c-decl.c: Include print-tree.h.
Include stor-layout.h.
Include varasm.h.
Include attribs.h.
Include stringpool.h.
* c-lang.c: Include fold-const.h.
* c-parser.c: Include stringpool.h.
Include attribs.h.
Include stor-layout.h.
Include varasm.h.
Include trans-mem.h.
* c-typeck.c: Include stor-layout.h.
Include trans-mem.h.
Include varasm.h.
Include stmt.h.
cp/ChangeLog
* call.c: Include stor-layout.h.
Include trans-mem.h.
Include stringpool.h.
* class.c: Include stringpool.h.
Include stor-layout.h.
Include attribs.h.
* cp-gimplify.c: Include stor-layout.h.
* cvt.c: Include stor-layout.h.
* decl.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include attribs.h.
Include calls.h.
* decl2.c: Include stringpool.h.
Include varasm.h.
Include attribs.h.
Include stor-layout.h.
Include calls.h.
* error.c: Include stringpool.h.
* except.c: Include stringpool.h.
Include trans-mem.h.
Include attribs.h.
* init.c: Include stringpool.h.
Include varasm.h.
* lambda.c: Include stringpool.h.
* lex.c: Include stringpool.h.
* mangle.c: Include stor-layout.h.
Include stringpool.h.
* method.c: Include stringpool.h.
Include varasm.h.
* name-lookup.c: Include stringpool.h.
Include print-tree.h.
Include attribs.h.
* optimize.c: Include stringpool.h.
* parser.c: Include print-tree.h.
Include stringpool.h.
Include attribs.h.
Include trans-mem.h.
* pt.c: Include stringpool.h.
Include varasm.h.
Include attribs.h.
Include stor-layout.h.
* ptree.c: Include print-tree.h.
* repo.c: Include stringpool.h.
* rtti.c: Include stringpool.h.
Include stor-layout.h.
* semantics.c: Include stmt.h.
Include varasm.h.
Include stor-layout.h.
Include stringpool.h.
* tree.c: Include stor-layout.h.
Include print-tree.h.
Include tree-iterator.h.
* typeck.c: Include stor-layout.h.
Include varasm.h.
* typeck2.c: Include stor-layout.h.
Include varasm.h.
* vtable-class-hierarchy.c: Include stringpool.h.
Include stor-layout.h.
fortran/ChangeLog
* decl.c: Include stringpool.h.
* iresolve.c: Include stringpool.h.
* match.c: Include stringpool.h.
* module.c: Include stringpool.h.
* target-memory.c: Include stor-layout.h.
* trans-common.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
* trans-const.c: Include stor-layout.h.
* trans-decl.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
Include attribs.h.
* trans-expr.c: Include stringpool.h.
* trans-intrinsic.c: Include stringpool.h.
Include tree-nested.h.
Include stor-layout.h.
* trans-io.c: Include stringpool.h.
Include stor-layout.h.
* trans-openmp.c: Include stringpool.h.
* trans-stmt.c: Include stringpool.h.
* trans-types.c: Include stor-layout.h.
Include stringpool.h.
* trans.c: Include stringpool.h.
go/ChangeLog
* go-backend.c: Include stor-layout.h.
* go-gcc.cc: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
* go-lang.c: Include stor-layout.h.
java/ChangeLog
* builtins.c: Include stor-layout.h.
Include stringpool.h.
* class.c: Include stringpool.h.
Include stor-layout.h.
Include varasm.h.
* constants.c: Include stringpool.h.
Include stor-layout.h.
* decl.c: Include stor-layout.h.
Include stringpool.h.
Include varasm.h.
* except.c: Include stringpool.h.
Include stor-layout.h.
* expr.c: Include stringpool.h.
Include stor-layout.h.
* jcf-parse.c: Include stringpool.h.
* mangle.c: Include stringpool.h.
* resource.c: Include stringpool.h.
Include stor-layout.h.
* typeck.c: Include stor-layout.h.
Include stringpool.h.
* verify-glue.c: Include stringpool.h.
lto/ChangeLog
* lto-lang.c: Include stringpool.h.
Include stor-layout.h.
* lto-partition.c: Include gcc-symtab.h.
* lto.c: Include stor-layout.h.
objc/ChangeLog
* objc-act.c: Include stringpool.h.
Include stor-layout.h.
Include attribs.h.
* objc-encoding.c: Include stringpool.h.
Include stor-layout.h.
* objc-gnu-runtime-abi-01.c: Include stringpool.h.
* objc-next-runtime-abi-01.c:
Include stringpool.h.
* objc-next-runtime-abi-02.c: Include stringpool.h.
* objc-runtime-shared-support.c: Include stringpool.h.
testsuite/ChangeLog
* gcc.dg/plugin/selfassign.c: Include stringpool.h.
* gcc.dg/plugin/start_unit_plugin.c: Likewise.
From-SVN: r205023
|
|
gcc/c-family/
* c-common.c, c-format.c, c-omp.c, c-pretty-print.c: Replace
tree_low_cst (..., 0) with tree_to_shwi throughout.
gcc/c/
* c-parser.c: Replace tree_low_cst (..., 0) with tree_to_shwi
throughout.
gcc/cp/
* class.c, dump.c, error.c, init.c, method.c, parser.c, semantics.c:
Replace tree_low_cst (..., 0) with tree_to_shwi throughout.
gcc/go/
* gofrontend/expressions.cc: Replace tree_low_cst (..., 0) with
tree_to_shwi throughout.
gcc/java/
* class.c, expr.c: Replace tree_low_cst (..., 0) with tree_to_shwi
throughout.
gcc/objc/
* objc-next-runtime-abi-02.c: Replace tree_low_cst (..., 0) with
tree_to_shwi throughout.
gcc/
* builtins.c, cilk-common.c, config/aarch64/aarch64.c,
config/alpha/alpha.c, config/arm/arm.c, config/c6x/predicates.md,
config/i386/i386.c, config/ia64/predicates.md, config/s390/s390.c,
coverage.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c, expr.h,
fold-const.c, gimple-fold.c, godump.c, ipa-prop.c, omp-low.c,
predict.c, rtlanal.c, sdbout.c, stmt.c, stor-layout.c, targhooks.c,
tree-cfg.c, tree-data-ref.c, tree-inline.c, tree-ssa-forwprop.c,
tree-ssa-loop-prefetch.c, tree-ssa-phiopt.c, tree-ssa-sccvn.c,
tree-ssa-strlen.c, tree-stdarg.c, tree-vect-data-refs.c,
tree-vect-patterns.c, tree.c, tree.h, var-tracking.c, varasm.c:
Replace tree_low_cst (..., 0) with tree_to_shwi throughout.
From-SVN: r204959
|
|
gcc/ada/
* gcc-interface/cuintp.c: Replace host_integerp (..., 0) with
tree_fits_shwi_p throughout.
gcc/c-family/
* c-ada-spec.c, c-common.c, c-format.c, c-pretty-print.c: Replace
host_integerp (..., 0) with tree_fits_shwi_p throughout.
gcc/c/
* c-parser.c: Replace host_integerp (..., 0) with tree_fits_shwi_p
throughout.
gcc/cp/
* error.c, init.c, parser.c, semantics.c: Replace
host_integerp (..., 0) with tree_fits_shwi_p throughout.
gcc/go/
* gofrontend/expressions.cc: Replace host_integerp (..., 0) with
tree_fits_shwi_p throughout.
gcc/java/
* class.c, expr.c: Replace host_integerp (..., 0) with
tree_fits_shwi_p throughout.
gcc/
* builtins.c, config/alpha/alpha.c, config/c6x/predicates.md,
config/ia64/predicates.md, config/iq2000/iq2000.c, config/mips/mips.c,
config/s390/s390.c, dbxout.c, dwarf2out.c, except.c, explow.c, expr.c,
expr.h, fold-const.c, gimple-fold.c, gimple-ssa-strength-reduction.c,
gimple.c, godump.c, graphite-scop-detection.c, graphite-sese-to-poly.c,
omp-low.c, predict.c, rtlanal.c, sdbout.c, simplify-rtx.c,
stor-layout.c, tree-data-ref.c, tree-dfa.c, tree-pretty-print.c,
tree-sra.c, tree-ssa-alias.c, tree-ssa-forwprop.c,
tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c, tree-ssa-math-opts.c,
tree-ssa-phiopt.c, tree-ssa-reassoc.c, tree-ssa-sccvn.c,
tree-ssa-strlen.c, tree-ssa-structalias.c, tree-vect-data-refs.c,
tree-vect-patterns.c, tree-vectorizer.h, tree.c, var-tracking.c,
varasm.c: Replace host_integerp (..., 0) with tree_fits_shwi_p
throughout.
From-SVN: r204955
|
|
This is the first patch in a series of patches to cleanup tree.h to
reduce the exposure it has all over the compiler.
In this patch, I'm moving functions that are used once into the files
that use them, and make them private to that file. These functions
were declared extern in tree.h and called from exactly one place.
The patch does not move EVERY function. This usually happens
when the function uses private state from its original file, and
moving that private state would mean moving other functions that made
no sense to move.
Additionally, the patch removes functions that were never used.
In subsequent patches, I will be moving out of tree.h extern definitions
that should be grouped in other files (e.g., all functions defined in
some FOO.c will be moved to the corresponding FOO.h). This will allow
me to remove the inclusion of tree.h from some files.
* attribs.c (lookup_scoped_attribute_spec): Make static.
(get_attribute_namespace): Likewise.
* builtins.c (more_const_call_expr_args_p): Move from
tree.h.
(validate_arglist): Move earlier in the file. Make static.
(expand_stack_restore): Move from stmt.c
(expand_stack_save): Move from stmt.c
(rewrite_call_expr_array): Move earlier in the file.
(rewrite_call_expr_valist): Likewise.
* cfgexpand.c: Include hard-reg-set.h before tree.h
Include recog.h.
Include output.h.
(expand_asm_loc): Move from stmt.c.
(n_occurrences): Move from stmt.c.
(check_operand_nalternatives): Move from stmt.c.
(tree_conflicts_with_clobbers_p): Move from stmt.c.
(expand_asm_operands): Move from stmt.c
(expand_asm_stmt): Move from stmt.c
(expand_computed_goto): Move from stmt.c
(expand_goto): Move from stmt.c
(expand_null_return_1): Move from stmt.c
(expand_null_return): Move from stmt.c
(expand_value_return): Move from stmt.c
(expand_return): Move from stmt.c
(expand_main_function): Move from function.c
(stack_protect_prologue): Move from function.c
* cgraphclones.c (build_function_type_skip_args): Move from tree.c.
(build_function_decl_skip_args): Move from tree.c.
* explow.c (tree_expr_size): Move from tree.c.
* expr.c (addr_expr_of_non_mem_decl_p): Remove.
(fields_length): Move from tree.c.
* fold-const.c (size_low_cst): Move from tree.c.
(tree_expr_nonzero_warnv_p): Make static. Move earlier in the file.
(tree_expr_nonzero_p): Make static. Move earlier in the file.
(fold_build3_initializer_loc): Remove.
(tree_invalid_nonnegative_warnv_p): Make static.
* function.c (expand_main_function): Move to cfgexpand.c.
(stack_protect_prologue): Move to cfgexpand.c.
(set_insn_locations): Move earlier in the file.
* gimple-fold.c: Include langhooks.h.
(truth_type_for): Move from tree.c.
* print-tree.c (print_vec_tree): Remove.
* stmt.c (expand_computed_goto): Move to cfgexpand.c.
(expand_goto): Move to cfgexpand.c.
(n_occurrences): Move to cfgexpand.c.
(expand_asm_loc): Move to cfgexpand.c
(tree_conflicts_with_clobbers_p): Move to cfgexpand.c.
(expand_asm_operands): Move to cfgexpand.c.
(expand_asm_stmt): Move to cfgexpand.c.
(check_operand_nalternatives): Move to cfgexpand.c
(expand_null_return): Move to cfgexpand.c.
(expand_value_return): Move to cfgexpand.c.
(expand_null_return_1): Move to cfgexpand.c.
(expand_return): Move to cfgexpand.c.
(expand_stack_save): Move to builtins.c.
(expand_stack_restore): Move to builtins.c
* symtab.c: Include output.h.
(decl_assembler_name_hash): Move from tree.c.
(decl_assembler_name_equal): Move from tree.c.
* trans-mem.c (is_tm_safe_or_pure): Move from tree.h.
* tree-eh.c (in_array_bounds_p): Move from tree.c.
(range_in_array_bounds_p): Move from tree.c.
* tree-object-size.c (fini_object_sizes): Make static.
* tree-ssa-dom.c (iterative_hash_exprs_commutative): Move from tree.h.
* tree-vrp.c (ssa_name_nonnegative_p): Remove.
* tree.c (decl_assembler_name_equal): Move to symtab.c.
(tree_expr_size): Move to explow.c.
(decl_assembler_name_hash): Move to symtab.c.
(real_twop): Remove.
(tree_expr_size): Move to explow.c.
(stabilize_reference_1): Move earlier in the file. Make static.
(omp_remove_redundant_declare_simd_attrs): Remove.
(simple_cst_list_equal): Move earlier in the file. Make static.
(size_low_cst): Move to fold-const.c.
(build_type_no_quals): Remove.
(build_function_type_skip_args): Move to cgraphclones.c.
(build_function_decl_skip_args): Move to cgraphclones.c.
(in_array_bounds_p): Move to tree-eh.c.
(range_in_array_bounds_p): Move to tree-eh.c.
(truth_type_for): Move to gimple-fold.c.
(list_equal_p): remove.
* tree.h (decl_assembler_name_equal): Remove.
(decl_assembler_name_hash): Remove.
(truth_type_for): Remove.
(build_type_no_quals): Remove.
(build_function_decl_skip_args): Remove.
(in_array_bounds_p): Remove.
(range_in_array_bounds_p): Remove.
(size_low_cst): Remove.
(omp_remove_redundant_declare_simd_attrs): Remove.
(tree_expr_size): Remove.
(fields_length): Remove.
(stabilize_reference_1): Remove.
(expand_goto): Remove.
(expand_stack_save): Remove.
(expand_stack_restore): Remove.
(expand_return): Remove.
(fold_build3_initializer_loc): Remove.
(tree_expr_nonzero_p): Remove.
(tree_invalid_nonnegative_warnv_p): Remove.
(tree_expr_nonzero_warnv_p): Remove.
(fold_builtin_snprintf_chk): Remove.
(validate_arglist): Remove.
(iterative_hash_exprs_commutative): Move to tree-ssa-dom.c.
(simple_cst_list_equal): Remove.
(real_twop): Remove.
(expand_main_function): Remove.
(stack_protect_prologue): Remove.
(print_vec_tree): Remove.
(lookup_scoped_attribute_spec): Remove.
(get_attribute_namespace): Remove.
(expand_computed_goto): Remove.
(expand_asm_stmt): Remove.
(list_equal_p): Remove.
(ssa_name_nonnegative_p): Remove.
(fini_object_sizes): Remove.
(addr_expr_of_non_mem_decl_p): Remove.
(is_tm_safe_or_pure): Move to trans-mem.c.
(more_const_call_expr_args_p): Remove.
(save_vtable_map_decl): Remove.
From-SVN: r204606
|
|
* combine.c (simplify_set, expand_field_assignment, extract_left_shift)
(force_to_mode, simplify_shift_const_1, simplify_comparison):
Use gen_int_mode with the mode of the associated simplify_* call.
* explow.c (probe_stack_range, anti_adjust_stack_and_probe): Likewise.
* expmed.c (expand_shift_1): Likewise.
* function.c (instantiate_virtual_regs_in_insn): Likewise.
* loop-iv.c (iv_number_of_iterations): Likewise.
* loop-unroll.c (unroll_loop_runtime_iterations): Likewise.
* simplify-rtx.c (simplify_binary_operation_1): Likewise.
From-SVN: r202393
|
|
expand_* call.
gcc/
* asan.c (asan_clear_shadow): Use gen_int_mode with the mode
of the associated expand_* call.
(asan_emit_stack_protection): Likewise.
* builtins.c (round_trampoline_addr): Likewise.
* explow.c (allocate_dynamic_stack_space, probe_stack_range): Likewise.
* expmed.c (expand_smod_pow2, expand_sdiv_pow2, expand_divmod)
(emit_store_flag): Likewise.
* expr.c (emit_move_resolve_push, push_block, emit_single_push_insn_1)
(emit_push_insn, optimize_bitfield_assignment_op, expand_expr_real_1):
Likewise.
* function.c (instantiate_virtual_regs_in_insn): Likewise.
* ifcvt.c (noce_try_store_flag_constants): Likewise.
* loop-unroll.c (unroll_loop_runtime_iterations): Likewise.
* modulo-sched.c (generate_prolog_epilog): Likewise.
* optabs.c (expand_binop, widen_leading, expand_doubleword_clz)
(expand_ctz, expand_ffs, expand_unop): Likewise.
From-SVN: r202392
|
|
associated gen_rtx_* call.
gcc/
* alias.c (addr_side_effect_eval): Use gen_int_mode with the mode
of the associated gen_rtx_* call.
* caller-save.c (init_caller_save): Likewise.
* combine.c (find_split_point, make_extraction): Likewise.
(make_compound_operation): Likewise.
* dwarf2out.c (mem_loc_descriptor): Likewise.
* explow.c (plus_constant, probe_stack_range): Likewise.
* expmed.c (expand_mult_const): Likewise.
* expr.c (emit_single_push_insn_1, do_tablejump): Likewise.
* reload1.c (init_reload): Likewise.
* valtrack.c (cleanup_auto_inc_dec): Likewise.
* var-tracking.c (adjust_mems): Likewise.
* modulo-sched.c (sms_schedule): Likewise, but use gen_rtx_GT
rather than gen_rtx_fmt_ee.
From-SVN: r202391
|
|
gcc/
* explow.c (plus_constant): Pass "mode" to immed_double_int_const.
Use gen_int_mode rather than GEN_INT.
From-SVN: r198462
|
|
From-SVN: r195098
|
|
From-SVN: r194903
|
|
Some old functionality required new interfaces, and these have been added to
double-int.[hc]:
double_int::from_pair - static constructor function
wide_mul_with_sign - double-wide multiply instruction
sub_with_overflow - subtraction with overlow testing
neg_with_overflow - negation with overlow testing
divmod_with_overflow - div and mod with overlow testing
This patch corrects the bootstrap problem on HPPA, via the addition of
sub_with_overflow. (The overflow properties of negation and addition are
different from subtraction.)
The prior two generations of the interface have been removed.
Some of these old interfaces are still used as static implementation in
double-int.c.
The changed compiler appears 0.321% faster with 80% confidence of being faster.
Tested on x86_64, HPPA, and SPARC. However, there are changes to the avr
config files, and I have not tested those.
Index: gcc/java/ChangeLog
2012-09-24 Lawrence Crowl <crowl@google.com>
* decl.c (java_init_decl_processing): Change to new double_int API.
* jcf-parse.c (get_constant): Likewise.
* boehm.c (mark_reference_fields): Likewise.
(get_boehm_type_descriptor): Likewise.
Index: gcc/ChangeLog
2012-09-24 Lawrence Crowl <crowl@google.com>
* double-int.h (double_int::from_pair): New.
(double_int::wide_mul_with_sign): New.
(double_int::sub_with_overflow): New.
(double_int::neg_with_overflow): New.
(double_int::divmod_with_overflow): New.
(shwi_to_double_int): Remove.
(uhwi_to_double_int): Remove.
(double_int_to_shwi): Remove.
(double_int_to_uhwi): Remove.
(double_int_fits_in_uhwi_p): Remove.
(double_int_fits_in_shwi_p): Remove.
(double_int_fits_in_hwi_p): Remove.
(double_int_mul): Remove.
(double_int_mul_with_sign): Remove.
(double_int_add): Remove.
(double_int_sub): Remove.
(double_int_neg): Remove.
(double_int_div): Remove.
(double_int_sdiv): Remove.
(double_int_udiv): Remove.
(double_int_mod): Remove.
(double_int_smod): Remove.
(double_int_umod): Remove.
(double_int_divmod): Remove.
(double_int_sdivmod): Remove.
(double_int_udivmod): Remove.
(double_int_multiple_of): Remove.
(double_int_setbit): Remove.
(double_int_ctz): Remove.
(double_int_not): Remove.
(double_int_ior): Remove.
(double_int_and): Remove.
(double_int_and_not): Remove.
(double_int_xor): Remove.
(double_int_lshift): Remove.
(double_int_rshift): Remove.
(double_int_lrotate): Remove.
(double_int_rrotate): Remove.
(double_int_negative_p): Remove.
(double_int_cmp): Remove.
(double_int_scmp): Remove.
(double_int_ucmp): Remove.
(double_int_max): Remove.
(double_int_smax): Remove.
(double_int_umax): Remove.
(double_int_min): Remove.
(double_int_smin): Remove.
(double_int_umin): Remove.
(double_int_ext): Remove.
(double_int_sext): Remove.
(double_int_zext): Remove.
(double_int_mask): Remove.
(double_int_max_value): Remove.
(double_int_min_value): Remove.
(double_int_zero_p): Remove.
(double_int_one_p): Remove.
(double_int_minus_one_p): Remove.
(double_int_equal_p): Remove.
(double_int_popcount): Remove.
(extern add_double_with_sign): Remove.
(#define add_double): Remove.
(extern neg_double): Remove.
(extern mul_double_with_sign): Remove.
(extern mul_double_wide_with_sign): Remove.
(#define mul_double): Remove.
(extern lshift_double): Remove.
(extern div_and_round_double): Remove.
* double-int.c (add_double_with_sign): Make static.
(#defined add_double): Localized from header.
(neg_double): Make static.
(mul_double_with_sign): Make static.
(mul_double_wide_with_sign): Make static.
(#defined mul_double): Localized from header.
(lshift_double): Make static.
(div_and_round_double): Make static.
(double_int::wide_mul_with_sign): New.
(double_int::sub_with_overflow): New.
(double_int::neg_with_overflow): New.
(double_int::divmod_with_overflow): New.
* emit-rtl.c (init_emit_once): Change to new double_int API.
* explow.c (plus_constant): Likewise.
* expmed.c (choose_multiplier): Likewise.
* fold-const.c (#define OVERFLOW_SUM_SIGN): Remove.
(int_const_binop_1): Change to new double_int API.
(fold_div_compare): Likewise.
(maybe_canonicalize_comparison): Likewise.
(pointer_may_wrap_p): Likewise.
(fold_negate_const): Likewise.
(fold_abs_const): Likewise.
* simplify-rtx.c (simplify_const_unary_operation): Likewise.
(simplify_const_binary_operation): Likewise.
* tree-chrec.c (tree_fold_binomial): Likewise.
* tree-vrp.c (extract_range_from_binary_expr_1): Likewise.
* config/sparc/sparc.c (sparc_fold_builtin): Likewise.
* config/avr/avr.c (avr_double_int_push_digit): Likewise.
(avr_map): Likewise.
(avr_map_decompose): Likewise.
(avr_out_insert_bits): Likewise.
Index: gcc/cp/ChangeLog
2012-09-24 Lawrence Crowl <crowl@google.com>
* init.c (build_new_1): Change to new double_int API.
* decl.c (build_enumerator): Likewise.
* typeck2.c (process_init_constructor_array): Likewise.
* mangle.c (write_array_type): Likewise.
Index: gcc/fortran/ChangeLog
2012-09-24 Lawrence Crowl <crowl@google.com>
* trans-expr.c (gfc_conv_cst_int_power): Change to new double_int API.
* target-memory.c (gfc_interpret_logical): Likewise.
From-SVN: r191675
|
|
2012-08-23 Kenneth Zadeck <zadeck@naturalbridge.com>
* alias.c (rtx_equal_for_memref_p): Convert constant cases.
* combine.c (find_single_use_1, mark_used_regs_combine): Convert
to CASE_CONST_ANY.
* cse.c (exp_equiv_p, canon_reg, fold_rtx, cse_process_notes_1,
count_reg_usage): Convert constant cases.
* cselib.c (cselib_expand_value_rtx_1): Convert to
CASE_CONST_ANY.
(cselib_subst_to_values): Convert constant cases.
* df-scan.c (df_uses_record): Ditto.
* dse.c (const_or_frame_p): Convert case statements to explicit
if-then-else using mode classes.
* emit-rtl.c (verify_rtx_sharing, copy_insn_1): Convert constant cases.
* explow.c (convert_memory_address_addr_space): Ditto.
* gcse.c (want_to_gcse_p, oprs_unchanged_p, compute_transp): Ditto.
* genattrtab.c (attr_copy_rtx, clear_struct_flag): Ditto.
* ira.c (equiv_init_varies_p, contains_replace_regs,
memref_referenced_p, rtx_moveable_p): Ditto.
* jump.c (mark_jump_label_1): Remove constant cases.
(rtx_renumbered_equal_p): Convert to CASE_CONST_UNIQUE.
* loop-invariant.c (check_maybe_invariant, hash_invariant_expr_1,
invariant_expr_equal_p): Convert to CASE_CONST_ANY.
* postreload-gcse.c (oprs_unchanged_p): Convert constant cases.
* reginfo.c (reg_scan_mark_refs): Ditto.
* regrename.c (scan_rtx): Ditto.
* reload1.c (eliminate_regs_1, elimination_effects,
scan_paradoxical_subregs): Ditto.
* reload.c (operands_match_p, subst_reg_equivs): Ditto.
* resource.c (mark_referenced_resources, mark_set_resources): Ditto.
* rtlanal.c (rtx_unstable_p, rtx_varies_p, count_occurrences)
(reg_mentioned_p, modified_between_p, modified_in_p)
(volatile_insn_p, volatile_refs_p, side_effects_p, may_trap_p_1,
inequality_comparisons_p, computed_jump_p_1): Ditto.
* rtl.c (copy_rtx, rtx_equal_p_cb, rtx_equal_p): Ditto.
* sched-deps.c (sched_analyze_2): Ditto.
* valtrack.c (cleanup_auto_inc_dec): Ditto.
* rtl.h: (CASE_CONST_SCALAR_INT, CASE_CONST_UNIQUE,
CASE_CONST_ANY): New macros.
From-SVN: r190627
|
|
This reverts commit 190051.
From-SVN: r190110
|
|
PR 34548
* function.h (struct rtl_data): Add max_dynamic_stack_alignment.
* cfgexpand.c (gimple_expand_cfg): Initialise it.
* explow.c (allocate_dynamic_stack_space): Set it. Simplify
alignment requirements given the known alignment of dynamic_offset.
* function.c (instantiate_virtual_regs): Align dtnamic_offset.
From-SVN: r190051
|
|
* expmed.c (expand_mult, choose_multiplier): Change "2 *
HOST_BITS_PER_WIDE_INT" to "HOST_BITS_PER_DOUBLE_INT".
* expr.c (convert_modes): Likewise.
* explow.c (plus_constant): Likewise.
* fixed-value.c (fixed_saturate1, fixed_saturate2)
(do_fixed_add, do_fixed_multiply, do_fixed_multiply)
(do_fixed_multiply, do_fixed_multiply, do_fixed_divide)
(do_fixed_divide, do_fixed_divide, do_fixed_divide)
(do_fixed_divide, do_fixed_divide, do_fixed_shift, do_fixed_shift)
(do_fixed_shift, fixed_convert, fixed_convert)
(fixed_convert_from_int, fixed_convert_from_int)
(fixed_convert_from_real): Likewise.
* fold-const.c (fold_convert_const_int_from_fixed, sign_bit_p)
(native_interpret_int, fold_binary_loc, fold_ternary_loc): Likewise.
* varasm.c (output_constructor_bitfield): Likewise.
* tree-vrp.c (register_edge_assert_for_2): Likewise.
* double-int.c (rshift_double, lshift_double): Likewise.
* double-int.h (double_int_fits_in_uhwi_p, double_int, double_int): Likewise.
* simplify-rtx.c (mode_signbit_p)
(simplify_const_unary_operation, simplify_binary_operation_1)
(simplify_immed_subreg): Likewise.
* builtins.c (c_readstr, fold_builtin_bitop): Likewise.
* tree-vect-generic.c (build_replicated_const): Likewise.
* dbxout.c (stabstr_O): Likewise.
* emit-rtl.c (immed_double_int_const, immed_double_const)
(gen_lowpart_common, init_emit_once): Likewise.
* tree.c (integer_pow2p, tree_log2, tree_floor_log2)
(widest_int_cst_value, upper_bound_in_type): Likewise.
* stor-layout.c (initialize_sizetypes, fixup_signed_type)
(fixup_unsigned_type): Likewise.
* real.c (real_to_integer2, real_from_integer): Likewise.
* dwarf2out.c (size_of_loc_descr, size_of_die, output_die)
(clz_loc_descriptor, mem_loc_descriptor): Likewise.
From-SVN: r188139
|
|
* explow.c (probe_stack_range): Restore simple control flow and stop
again when the probe cannot be generated if HAVE_check_stack.
From-SVN: r188003
|
|
* doc/md.texi (Standard Names): Document probe_stack_address.
* explow.c (emit_stack_probe): Handle probe_stack_address.
* config/ia64/ia64.md (UNSPECV_PROBE_STACK_ADDRESS): New constant.
(UNSPECV_PROBE_STACK_RANGE): Likewise.
(probe_stack_address): New insn.
(probe_stack_range): Likewise.
* config/ia64/ia64.c: Include common/common-target.h.
(ia64_compute_frame_size): Mark r2 and r3 as used if static stack
checking is enabled.
(ia64_emit_probe_stack_range): New function.
(output_probe_stack_range): Likewise.
(ia64_expand_prologue): Invoke ia64_emit_probe_stack_range if static
builtin stack checking is enabled.
(rtx_needs_barrier) <UNSPEC_VOLATILE>: Handle UNSPECV_PROBE_STACK_RANGE
and UNSPECV_PROBE_STACK_ADDRESS.
(unknown_for_bundling_p): New predicate.
(group_barrier_needed): Use important_for_bundling_p.
(ia64_dfa_new_cycle): Use unknown_for_bundling_p.
(issue_nops_and_insn): Likewise.
(bundling): Likewise.
(final_emit_insn_group_barriers): Likewise.
* config/ia64/ia64-protos.h (output_probe_stack_range): Declare.
* config/ia64/hpux.h (STACK_CHECK_STATIC_BUILTIN): Define.
(STACK_CHECK_PROTECT): Likewise.
* config/ia64/linux.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
Co-Authored-By: Tristan Gingold <gingold@adacore.com>
From-SVN: r187383
|
|
gcc/
* rtl.h (plus_constant, plus_constant_mode): Merge into a single
plus_constant function.
* explow.c (plus_constant, plus_constant_mode): Likewise. Assert
that the mode is sensible.
(use_anchored_address, round_push, allocate_dynamic_stack_space)
(probe_stack_range, anti_adjust_stack_and_probe): Update calls to
plus_constant.
* alias.c (canon_rtx): Likewise.
(init_alias_analysis): Likewise.
* builtins.c (expand_builtin_return_addr)
(expand_builtin_setjmp_setup, expand_builtin_longjmp)
(expand_builtin_nonlocal_goto, expand_builtin_update_setjmp_buf)
(expand_builtin_apply_args_1, expand_builtin_apply, expand_movstr)
(expand_builtin_stpcpy): Likewise.
* calls.c (save_fixed_argument_area, restore_fixed_argument_area)
(compute_argument_addresses, internal_arg_pointer_based_exp)
(expand_call, emit_library_call_value_1): Likewise.
* cfgexpand.c (expand_one_stack_var_at, expand_debug_expr): Likewise.
* combine-stack-adj.c (try_apply_stack_adjustment): Likewise.
* combine.c (combine_simplify_rtx, force_to_mode): Likewise.
* cse.c (insert_const_anchor, find_reg_offset_for_const)
(use_related_value, fold_rtx): Likewise.
* cselib.c (cselib_subst_to_values): Likewise.
* dse.c (record_store, check_mem_read_rtx): Likewise.
* dwarf2out.c (rtl_for_decl_location, gen_variable_die): Likewise.
* emit-rtl.c (adjust_address_1): Likewise.
* except.c (sjlj_emit_function_enter)
(expand_builtin_extract_return_addr)
(expand_builtin_frob_return_addr): Likewise.
* expmed.c (expand_divmod): Likewise.
* expr.c (move_by_pieces, store_by_pieces, store_by_pieces_1)
(emit_move_resolve_push, push_block, emit_push_insn, store_expr)
(expand_expr_addr_expr_1, expand_expr_real_1): Likewise.
* function.c (assign_stack_local_1)
(instantiate_virtual_regs_in_rtx): Likewise.
* optabs.c (prepare_cmp_insn): Likewise.
* recog.c (offsettable_address_addr_space_p): Likewise.
* reload.c (find_reloads_address, form_sum)
(find_reloads_subreg_address): Likewise.
* reload1.c (init_reload, eliminate_regs_1)
(eliminate_regs_in_insn): Likewise.
* simplify-rtx.c (simplify_unary_operation_1)
(simplify_binary_operation_1, simplify_plus_minus): Likewise.
* var-tracking.c (compute_cfa_pointer, prepare_call_arguments)
(vt_add_function_parameter): Likewise.
* config/alpha/alpha.h (EH_RETURN_HANDLER_RTX): Likewise.
* config/alpha/vms.h (EH_RETURN_HANDLER_RTX): Likewise.
* config/alpha/alpha.c (alpha_legitimize_address_1)
(get_unaligned_address, alpha_expand_unaligned_load)
(alpha_expand_unaligned_store, alpha_expand_unaligned_load_words)
(alpha_expand_unaligned_store_words, alpha_expand_block_clear)
(alpha_expand_builtin_establish_vms_condition_handler)
(alpha_setup_incoming_varargs, emit_frame_store_1)
(alpha_expand_prologue, alpha_expand_epilogue)
(alpha_use_linkage): Likewise.
* config/alpha/alpha.md: Likewise.
* config/arm/arm.c (arm_trampoline_init, legitimize_pic_address)
(arm_load_pic_register, arm_pic_static_addr, arm_legitimize_address)
(thumb_legitimize_address, arm_gen_load_multiple_1)
(arm_gen_store_multiple_1, arm_gen_multiple_op, gen_ldm_seq)
(gen_stm_seq, gen_const_stm_seq, arm_block_move_unaligned_straight)
(arm_block_move_unaligned_loop, arm_gen_movmemqi, arm_reload_in_hi)
(arm_reload_out_hi, arm_reorg, vfp_emit_fstmd, emit_multi_reg_push)
(emit_sfm, thumb_set_frame_pointer, arm_expand_prologue)
(thumb1_emit_multi_reg_push, thumb1_expand_prologue)
(thumb_expand_movmemqi, arm_set_return_address)
(thumb_set_return_address): Likewise.
* config/arm/arm.md: Likewise.
* config/avr/avr.c (avr_incoming_return_addr_rtx)
(avr_prologue_setup_frame, expand_epilogue)
(avr_const_address_lo16): Likewise.
* config/bfin/bfin.h (EH_RETURN_HANDLER_RTX): Likewise.
* config/bfin/bfin.c (setup_incoming_varargs, bfin_load_pic_reg)
(bfin_expand_prologue, bfin_trampoline_init, bfin_expand_call)
(bfin_output_mi_thunk): Likewise.
* config/c6x/c6x.c (c6x_initialize_trampoline)
(c6x_output_mi_thunk): Likewise.
* config/cr16/cr16.h (EH_RETURN_HANDLER_RTX): Likewise.
* config/cr16/cr16.c (cr16_create_dwarf_for_multi_push): Likewise.
* config/cris/cris.c (cris_return_addr_rtx, cris_split_movdx)
(cris_expand_prologue, cris_expand_epilogue, cris_gen_movem_load)
(cris_emit_movem_store, cris_trampoline_init): Likewise.
* config/cris/cris.md: Likewise.
* config/darwin.c (machopic_indirect_data_reference)
(machopic_legitimize_pic_address): Likewise.
* config/epiphany/epiphany.c (epiphany_emit_save_restore)
(epiphany_expand_prologue, epiphany_expand_epilogue)
(epiphany_trampoline_init): Likewise.
* config/epiphany/epiphany.md: Likewise.
* config/fr30/fr30.c (fr30_move_double): Likewise.
* config/frv/frv.c (frv_dwarf_store, frv_expand_prologue)
(frv_expand_block_move, frv_expand_block_clear, frv_return_addr_rtx)
(frv_index_memory, unspec_got_name, frv_find_base_term)
(frv_output_dwarf_dtprel): Likewise.
* config/h8300/h8300.c (h8300_push_pop, h8300_return_addr_rtx)
(h8300_swap_into_er6, h8300_swap_out_of_er6): Likewise.
* config/i386/i386.h (RETURN_ADDR_RTX): Likewise.
* config/i386/i386.c (setup_incoming_varargs_64)
(setup_incoming_varargs_ms_64, choose_baseaddr)
(ix86_emit_save_reg_using_mov, ix86_adjust_stack_and_probe)
(ix86_emit_probe_stack_range, ix86_expand_prologue)
(ix86_emit_restore_reg_using_pop, ix86_emit_leave)
(ix86_expand_epilogue, legitimize_pic_address, ix86_legitimize_address)
(ix86_split_long_move, ix86_expand_movmem, ix86_expand_setmem)
(ix86_static_chain, ix86_trampoline_init, x86_this_parameter)
(x86_output_mi_thunk): Likewise.
* config/i386/i386.md: Likewise.
* config/ia64/ia64.c (ia64_expand_load_address)
(ia64_expand_tls_address, ia64_expand_move, ia64_split_tmode)
(do_spill, ia64_trampoline_init): Likewise.
* config/iq2000/iq2000.c (iq2000_va_start)
(iq2000_emit_frame_related_store, iq2000_expand_prologue)
(iq2000_expand_eh_return, iq2000_setup_incoming_varargs)
(iq2000_print_operand, iq2000_legitimize_address): Likewise.
* config/lm32/lm32.c (lm32_setup_incoming_varargs): Likewise.
* config/m32c/m32c.c (m32c_return_addr_rtx)
(m32c_expand_insv): Likewise.
* config/m32r/m32r.c (m32r_setup_incoming_varargs)
(m32r_legitimize_pic_address, m32r_print_operand)
(m32r_print_operand_address): Likewise.
* config/m68k/linux.h (FINALIZE_TRAMPOLINE): Likewise.
* config/m68k/m68k.h (RETURN_ADDR_RTX): Likewise.
(EH_RETURN_HANDLER_RTX): Likewise.
* config/m68k/m68k.c (m68k_emit_movem, m68k_expand_prologue)
(m68k_expand_epilogue, legitimize_pic_address)
(m68k_output_mi_thunk): Likewise.
* config/m68k/m68k.md: Likewise.
* config/mcore/mcore.c (mcore_expand_prolog): Likewise.
(mcore_expand_epilog): Likewise.
* config/mcore/mcore.md: Likewise.
* config/mep/mep.c (mep_allocate_initial_value)
(mep_expand_prologue, mep_expand_epilogue): Likewise.
* config/microblaze/microblaze.c (double_memory_operand)
(microblaze_block_move_loop): Likewise.
* config/mips/mips.c (mips_strip_unspec_address, mips_add_offset)
(mips_setup_incoming_varargs, mips_va_start, mips_block_move_loop)
(mips_print_operand, mips16e_save_restore_reg, mips_save_restore_reg)
(mips_expand_prologue, mips_epilogue_set_cfa)
(mips_expand_epilogue): Likewise.
* config/mips/mips.md: Likewise.
* config/mmix/mmix.c (mmix_dynamic_chain_address, mmix_return_addr_rtx)
(mmix_expand_prologue, mmix_expand_epilogue): Likewise.
* config/mn10300/mn10300.c (mn10300_gen_multiple_store)
(mn10300_builtin_saveregs, mn10300_trampoline_init): Likewise.
* config/moxie/moxie.h (INCOMING_RETURN_ADDR_RTX): Likewise.
(EH_RETURN_HANDLER_RTX): Likewise.
* config/moxie/moxie.c (moxie_static_chain): Likewise.
* config/pa/pa.c (legitimize_pic_address, hppa_legitimize_address)
(store_reg, set_reg_plus_d, pa_expand_prologue, load_reg)
(pa_return_addr_rtx, hppa_builtin_saveregs)
(pa_trampoline_init): Likewise.
* config/pa/pa.md: Likewise.
* config/pdp11/pdp11.c (pdp11_expand_epilogue): Likewise.
* config/picochip/picochip.c (picochip_static_chain): Likewise.
* config/rs6000/rs6000.h (RS6000_SAVE_TOC): Likewise.
* config/rs6000/rs6000.c (rs6000_legitimize_address)
(setup_incoming_varargs, print_operand, rs6000_return_addr)
(rs6000_emit_eh_reg_restore, rs6000_emit_probe_stack_range)
(rs6000_emit_epilogue)
(rs6000_machopic_legitimize_pic_address): Likewise.
* config/rx/rx.c (gen_rx_rtsd_vector, gen_rx_popm_vector): Likewise.
* config/s390/s390.h (INITIAL_FRAME_ADDRESS_RTX): Likewise.
(DYNAMIC_CHAIN_ADDRESS): Likewise.
* config/s390/s390.c (s390_decompose_address, legitimize_pic_address)
(s390_delegitimize_address, print_operand, annotate_constant_pool_refs)
(replace_constant_pool_ref, s390_return_addr_rtx, s390_back_chain_rtx)
(save_fpr, restore_fpr, save_gprs, restore_gprs, s390_emit_prologue)
(s390_emit_epilogue, s390_function_profiler): Likewise.
* config/s390/s390.md: Likewise.
* config/score/score.c (score_add_offset, score_prologue): Likewise.
* config/sh/sh.c (expand_block_move, push_regs, sh_builtin_saveregs)
(sh_output_mi_thunk): Likewise.
* config/sh/sh.md: Likewise.
* config/sparc/sparc.h (DYNAMIC_CHAIN_ADDRESS, FRAME_ADDR_RTX)
(RETURN_ADDR_RTX, INCOMING_RETURN_ADDR_RTX): Likewise.
* config/sparc/sparc.c (sparc_legitimize_pic_address)
(sparc_emit_probe_stack_range, emit_save_or_restore_regs)
(emit_window_save, sparc_flat_expand_prologue, sparc_struct_value_rtx)
(emit_and_preserve): Likewise.
* config/sparc/sparc.md: Likewise.
* config/spu/spu.h (DYNAMIC_CHAIN_ADDRESS): Likewise.
* config/spu/spu.c (spu_expand_insv, spu_machine_dependent_reorg)
(spu_setup_incoming_varargs, ea_load_store_inline)
(spu_expand_load): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_prologue)
(combine_bnp): Likewise.
* config/tilegx/tilegx.h (DYNAMIC_CHAIN_ADDRESS): Likewise.
* config/tilegx/tilegx.c (tilegx_setup_incoming_varargs)
(tilegx_expand_unaligned_load, tilegx_trampoline_init): Likewise.
* config/tilepro/tilepro.h (DYNAMIC_CHAIN_ADDRESS): Likewise.
* config/tilepro/tilepro.c (tilepro_setup_incoming_varargs)
(tilepro_expand_unaligned_load, tilepro_trampoline_init): Likewise.
* config/v850/v850.c (expand_prologue, expand_epilogue): Likewise.
* config/v850/v850.md: Likewise.
* config/vax/elf.h (EH_RETURN_STACKADJ_RTX): Likewise.
(EH_RETURN_HANDLER_RTX): Likewise.
* config/vax/vax.h (DYNAMIC_CHAIN_ADDRESS, RETURN_ADDR_RTX): Likewise.
* config/vax/vax.c (vax_add_reg_cfa_offset, vax_expand_prologue)
(print_operand_address, vax_trampoline_init): Likewise.
* config/xtensa/xtensa.c (xtensa_expand_prologue, xtensa_return_addr)
(xtensa_function_value_regno_p): Likewise.
From-SVN: r187199
|
|
* doc/rtl.texi (const_double): Document as sign-extending.
* expmed.c (expand_mult): Ensure we don't use shift
incorrectly.
* emit-rtl.c (immed_double_int_const): Refine to state the
value is signed.
* simplify-rtx.c (mode_signbit_p): Add a fixme for wider than
CONST_DOUBLE integers.
(simplify_const_unary_operation, UNSIGNED_FLOAT): Ensure no
negative values are converted. Fix conversions bigger than
HOST_BITS_PER_WIDE_INT.
(simplify_binary_operation_1): Ensure we don't use shift
incorrectly.
(simplify_immed_subreg): Sign-extend CONST_DOUBLEs.
* explow.c (plus_constant_mode): Add.
(plus_constant): Implement with plus_constant_mode.
* rtl.h (plus_constant_mode): Add.
From-SVN: r186147
|
|
2011-09-14 Tom de Vries <tom@codesourcery.com>
PR middle-end/50251
* explow.c (emit_stack_restore): Set crtl->need_drap if
stack_restore is emitted.
From-SVN: r178853
|
|
gcc/
2011-08-19 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/49721
* explow.c (convert_memory_address_addr_space): Also permute the
conversion and addition of constant for zero-extend.
gcc/testsuite/
2011-08-19 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/49721
* gfortran.dg/pr49721-1.f: New.
* gfortran.fortran-torture/compile/pr49721-1.f: Likewise.
From-SVN: r177914
|
|
PR middle-end/50006
* explow.c (allocate_dynamic_stack_space): Move suppress_reg_args_size
setting out to include allocate_stack named pattern as well.
* builtins.c (expand_builtin_apply): Add ARG_SIZE 0 note.
* stmt.c (expand_stack_restore): Likewise.
From-SVN: r177764
|
|
PR target/49864
* reg-notes.def (REG_ARGS_SIZE): New.
* calls.c (emit_call_1): Emit REG_ARGS_SIZE for call_pop.
(expand_call): Add REG_ARGS_SIZE to emit_stack_restore.
* cfgcleanup.c (old_insns_match_p): Don't allow cross-jumping to
different stack levels.
* combine-stack-adj.c (adjust_frame_related_expr): Remove.
(maybe_move_args_size_note): New.
(combine_stack_adjustments_for_block): Use it.
* combine.c (distribute_notes): Place REG_ARGS_SIZE.
* dwarf2cfi.c (dw_cfi_row_struct): Remove args_size member.
(dw_trace_info): Add beg_true_args_size, end_true_args_size,
beg_delay_args_size, end_delay_args_size, eh_head, args_size_undefined.
(cur_cfa): New.
(queued_args_size): Remove.
(add_cfi_args_size): Assert size is non-negative.
(stack_adjust_offset, dwarf2out_args_size): Remove.
(dwarf2out_stack_adjust, dwarf2out_notice_stack_adjust): Remove.
(notice_args_size, notice_eh_throw): New.
(dwarf2out_frame_debug_def_cfa): Use cur_cfa.
(dwarf2out_frame_debug_adjust_cfa): Likewise.
(dwarf2out_frame_debug_cfa_offset): Likewise.
(dwarf2out_frame_debug_expr): Likewise. Don't stack_adjust_offset.
(dwarf2out_frame_debug): Don't handle non-frame-related-p insns.
(change_cfi_row): Don't emit args_size.
(maybe_record_trace_start_abnormal): Split out from ...
(maybe_record_trace_start): Here. Set args_size_undefined.
(create_trace_edges): Update to match.
(scan_trace): Handle REG_ARGS_SIZE.
(connect_traces): Connect args_size between EH insns.
* emit-rtl.c (try_split): Handle REG_ARGS_SIZE.
* explow.c (suppress_reg_args_size): New.
(adjust_stack_1): Split out from ...
(adjust_stack): ... here.
(anti_adjust_stack): Use it.
(allocate_dynamic_stack_space): Suppress REG_ARGS_SIZE.
* expr.c (mem_autoinc_base): New.
(fixup_args_size_notes): New.
(emit_single_push_insn_1): Rename from emit_single_push_insn.
(emit_single_push_insn): New. Generate REG_ARGS_SIZE.
* recog.c (peep2_attempt): Handle REG_ARGS_SIZE.
* reload1.c (reload_as_needed): Likewise.
* rtl.h (fixup_args_size_notes): Declare.
From-SVN: r177218
|
|
GET_MODE_BITSIZE where appropriate.
* explow.c (trunc_int_for_mode): Use GET_MODE_PRECISION
instead of GET_MODE_BITSIZE where appropriate.
* rtlanal.c (subreg_lsb_1, subreg_get_info, nonzero_bits1,
num_sign_bit_copies1, canonicalize_condition, low_bitmask_len,
init_num_sign_bit_copies_in_rep): Likewise.
* cse.c (fold_rtx, cse_insn): Likewise.
* loop-doloop.c (doloop_modify, doloop_optimize): Likewise.
* simplify-rtx.c (simplify_unary_operation_1,
simplify_const_unary_operation, simplify_binary_operation_1,
simplify_const_binary_operation, simplify_ternary_operation,
simplify_const_relational_operation, simplify_subreg): Likewise.
* combine.c (try_combine, find_split_point, combine_simplify_rtx,
simplify_if_then_else, simplify_set, expand_compound_operation,
expand_field_assignment, make_extraction, if_then_else_cond,
make_compound_operation, force_to_mode, make_field_assignment,
reg_nonzero_bits_for_combine, reg_num_sign_bit_copies_for_combine,
extended_count, try_widen_shift_mode, simplify_shift_const_1,
simplify_comparison, record_promoted_value, simplify_compare_const,
record_dead_and_set_regs_1): Likewise.
From-SVN: r175946
|
|
2011-07-01 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/48016
* explow.c (update_nonlocal_goto_save_area): Use proper mode
for stack save area.
* function.c (expand_function_start): Likewise.
From-SVN: r175756
|
|
* target-def.h (TARGET_HAVE_NAMED_SECTIONS): Move to
common/common-target-def.h.
* target.def (default_target_flags, handle_option,
supports_split_stack, optimization_table, init_struct,
except_unwind_info, unwind_tables_default, have_named_sections):
Move to common/common-target.def.
* target.h (enum opt_levels, struct default_options): Move to
common/common-target.h.
* targhooks.c (default_except_unwind_info,
dwarf2_except_unwind_info, sjlj_except_unwind_info,
default_target_handle_option, empty_optimization_table): Move to
common/common-targhooks.c.
* targhooks.h (default_except_unwind_info,
dwarf2_except_unwind_info, sjlj_except_unwind_info,
default_target_handle_option, empty_optimization_table): Move to
common/common-targhooks.h.
* common/common-target-def.h: Include common/common-targhooks.h.
(TARGET_HAVE_NAMED_SECTIONS): Define if TARGET_ASM_NAMED_SECTION
defined.
* common/common-target.def (handle_option, option_init_struct,
option_optimization_table, default_target_flags,
except_unwind_info, supports_split_stack, unwind_tables_default,
have_named_sections): Move from target.def.
(HOOK_PREFIX): Undefine at end of file.
* common/common-target.h: Include input.h.
(enum opt_levels, struct default_options): Move from target.h.
* common/common-targhooks.c, common/common-targhooks.h: New.
* config.gcc (target_has_targetm_common): Default to yes.
(moxie*): Set target_has_targetm_common=no.
(hppa*-*-*): Don't set target_has_targetm_common=yes.
* doc/tm.texi: Regenerate.
* Makefile.in (COMMON_TARGET_H): Add $(INPUT_H).
(C_TARGET_DEF_H): Add common/common-targhooks.h.
(GCC_OBJS): Remove vec.o.
(OBJS): Remove hooks.o and vec.o.
(OBJS-libcommon-target): Add vec.o, hooks.o and
common/common-targhooks.o.
(c-family/c-common.o, c-family/c-cppbuiltin.o, lto-opts.o, tree.o,
tree-tailcall.o, opts.o, toplev.o, varasm.o, function.o, except.o,
expr.o, explow.o, dbxout.o, dwarf2out.o, cfgrtl.o, haifa-sched.o,
cfglayout.o, $(out_object_file), $(common_out_object_file)):
Update dependencies.
(common/common-targhooks.o): New.
* common/config/default-common.c: Include tm.h. Add FIXME
comment.
* common/config/pa/pa-common.c: Include more headers. Take
copyright dates from pa.c.
(pa_option_optimization_table, pa_handle_option,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_HANDLE_OPTION): Move from pa.c.
* common/config/alpha/alpha-common.c,
common/config/arm/arm-common.c, common/config/avr/avr-common.c,
common/config/bfin/bfin-common.c,
common/config/cris/cris-common.c,
common/config/fr30/fr30-common.c, common/config/frv/frv-common.c,
common/config/h8300/h8300-common.c,
common/config/i386/i386-common.c,
common/config/ia64/ia64-common.c,
common/config/iq2000/iq2000-common.c,
common/config/lm32/lm32-common.c,
common/config/m32c/m32c-common.c,
common/config/m32r/m32r-common.c,
common/config/m68k/m68k-common.c,
common/config/mcore/mcore-common.c,
common/config/mep/mep-common.c,
common/config/microblaze/microblaze-common.c,
common/config/mips/mips-common.c,
common/config/mmix/mmix-common.c,
common/config/mn10300/mn10300-common.c,
common/config/pdp11/pdp11-common.c,
common/config/picochip/picochip-common.c,
common/config/rs6000/rs6000-common.c,
common/config/rx/rx-common.c, common/config/s390/s390-common.c,
common/config/score/score-common.c, common/config/sh/sh-common.c,
common/config/sparc/sparc-common.c,
common/config/spu/spu-common.c, common/config/v850/v850-common.c,
common/config/vax/vax-common.c,
common/config/xstormy16/xstormy16-common.c,
common/config/xtensa/xtensa-common.c: New.
* config/alpha/alpha.c: Include common/common-target.h.
(alpha_option_optimization_table, alpha_handle_option,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to alpha-common.c.
* config/arm/arm-protos.h (arm_except_unwind_info): Declare.
* config/arm/arm.c (arm_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO, arm_except_unwind_info): Move to
arm-common.c.
* config/avr/avr.c (avr_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_EXCEPT_UNWIND_INFO): Move
to avr-common.c.
* config/bfin/bfin.c (struct bfin_cpu): Move to bfin.h.
(bfin_cpus, bfin_handle_option, TARGET_HANDLE_OPTION,
TARGET_DEFAULT_TARGET_FLAGS): Move to bfin-common.c.
* config/bfin/bfin.h struct bfin_cpu): Move from bfin.c.
* config/cris/cris.c (cris_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE, cris_handle_option): Move to
cris-common.c.
* config/fr30/fr30.c (fr30_option_optimization_table,
TARGET_EXCEPT_UNWIND_INFO, TARGET_OPTION_OPTIMIZATION_TABLE): Move
to fr30-common.c.
* config/frv/frv.c (frv_option_optimization_table,
MASK_DEFAULT_ALLOC_CC, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to frv-common.c.
* config/h8300/h8300.c (h8300_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO): Move to h8300-common.c.
* config/i386/i386-protos.h (ix86_handle_option): Declare.
* config/i386/i386.c: Include common/common-target.h.
(OPTION_MASK_ISA_MMX_SET, OPTION_MASK_ISA_3DNOW_SET,
OPTION_MASK_ISA_SSE_SET, OPTION_MASK_ISA_SSE2_SET,
OPTION_MASK_ISA_SSE3_SET, OPTION_MASK_ISA_SSSE3_SET,
OPTION_MASK_ISA_SSE4_1_SET, OPTION_MASK_ISA_SSE4_2_SET,
OPTION_MASK_ISA_AVX_SET, OPTION_MASK_ISA_FMA_SET,
OPTION_MASK_ISA_SSE4_SET, OPTION_MASK_ISA_SSE4A_SET,
OPTION_MASK_ISA_FMA4_SET, OPTION_MASK_ISA_XOP_SET,
OPTION_MASK_ISA_LWP_SET, OPTION_MASK_ISA_AES_SET,
OPTION_MASK_ISA_PCLMUL_SET, OPTION_MASK_ISA_ABM_SET,
OPTION_MASK_ISA_BMI_SET, OPTION_MASK_ISA_TBM_SET,
OPTION_MASK_ISA_POPCNT_SET, OPTION_MASK_ISA_CX16_SET,
OPTION_MASK_ISA_SAHF_SET, OPTION_MASK_ISA_MOVBE_SET,
OPTION_MASK_ISA_CRC32_SET, OPTION_MASK_ISA_FSGSBASE_SET,
OPTION_MASK_ISA_RDRND_SET, OPTION_MASK_ISA_F16C_SET,
OPTION_MASK_ISA_MMX_UNSET, OPTION_MASK_ISA_3DNOW_UNSET,
OPTION_MASK_ISA_3DNOW_A_UNSET, OPTION_MASK_ISA_SSE_UNSET,
OPTION_MASK_ISA_SSE2_UNSET, OPTION_MASK_ISA_SSE3_UNSET,
OPTION_MASK_ISA_SSSE3_UNSET, OPTION_MASK_ISA_SSE4_1_UNSET,
OPTION_MASK_ISA_SSE4_2_UNSET, OPTION_MASK_ISA_AVX_UNSET,
OPTION_MASK_ISA_FMA_UNSET, OPTION_MASK_ISA_SSE4_UNSET,
OPTION_MASK_ISA_SSE4A_UNSET, OPTION_MASK_ISA_FMA4_UNSET,
OPTION_MASK_ISA_XOP_UNSET, OPTION_MASK_ISA_LWP_UNSET,
OPTION_MASK_ISA_AES_UNSET, OPTION_MASK_ISA_PCLMUL_UNSET,
OPTION_MASK_ISA_ABM_UNSET, OPTION_MASK_ISA_BMI_UNSET,
OPTION_MASK_ISA_TBM_UNSET, OPTION_MASK_ISA_POPCNT_UNSET,
OPTION_MASK_ISA_CX16_UNSET, OPTION_MASK_ISA_SAHF_UNSET,
OPTION_MASK_ISA_MOVBE_UNSET, OPTION_MASK_ISA_CRC32_UNSET,
OPTION_MASK_ISA_FSGSBASE_UNSET, OPTION_MASK_ISA_RDRND_UNSET,
OPTION_MASK_ISA_F16C_UNSET, ix86_handle_option,
ix86_option_optimization_table, ix86_option_init_struct,
ix86_supports_split_stack, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_HANDLE_OPTION, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_OPTION_INIT_STRUCT, TARGET_SUPPORTS_SPLIT_STACK): Move to
i386-common.c.
* config/i386/t-i386 (i386.o): Update dependencies.
* config/ia64/ia64-protos.h (ia64_except_unwind_info): Declare.
* config/ia64/ia64.c (ia64_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_EXCEPT_UNWIND_INFO,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
ia64_handle_option): Move to ia64-common.c.
* config/iq2000/iq2000.c (iq2000_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to iq2000-common.c.
* config/lm32/lm32.c (lm32_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_EXCEPT_UNWIND_INFO): Move
to lm32-common.c.
* config/m32c/m32c.c (TARGET_HAVE_NAMED_SECTIONS): Move to
m32c-common.c.
* config/m32r/m32r.c (m32r_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_EXCEPT_UNWIND_INFO,
m32r_handle_option): Move to m32r-common.c.
(m32r_memory_move_cost): Remove comment referring to
TARGET_HANDLE_OPTION.
* config/m68k/m68k.c (TARGET_HANDLE_OPTION, m68k_handle_option):
Move to m68k-common.c.
* config/mcore/mcore.c (mcore_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO): Move to mcore-common.c.
* config/mep/mep.c (mep_option_optimization_table,
mep_handle_option, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_DEFAULT_TARGET_FLAGS):
Move to mep-common.c.
* config/microblaze/microblaze.c
(microblaze_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO): Move to microblaze-common.c.
* config/mips/mips.c (mips_handle_option,
mips_option_optimization_table, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Move to
mips-common.c.
* config/mmix/mmix.c (mmix_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE):
Move to mmix-common.c.
* config/mn10300/mn10300.c (mn10300_option_optimization_table,
mn10300_handle_option, TARGET_EXCEPT_UNWIND_INFO,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to mn10300-common.c.
* config/pa/pa.c: Include common/common-target.h.
(pa_option_optimization_table, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
pa_handle_option): Move to pa-common.c.
(pa_option_override): Use targetm_common.except_unwind_info.
(pa_asm_output_mi_thunk, pa_function_section): Use
targetm_common.have_named_sections.
* config/pdp11/pdp11.c (pdp11_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_OPTION_INIT_STRUCT,
pdp11_handle_option, pdp11_option_init_struct): Move to
pdp11-common.c.
* config/picochip/picochip.c (picochip_option_optimization_table,
TARGET_HAVE_NAMED_SECTIONS, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO): Move to picochip-common.c.
* config/rs6000/rs6000.c: Include common/common-target.h.
(rs6000_option_optimization_table, TARGET_HANDLE_OPTION,
TARGET_OPTION_INIT_STRUCT, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_DEFAULT_TARGET_FLAGS, rs6000_option_init_struct,
rs6000_handle_option): Move to rs6000-common.c.
* config/rs6000/t-rs6000 (rs6000.o): Update dependencies.
* config/rx/rx.c (rx_handle_option, rx_option_optimization_table,
TARGET_HANDLE_OPTION, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_EXCEPT_UNWIND_INFO): Move to rx-common.c.
* config/s390/s390.c (processor_flags_table,
s390_option_optimization_table, s390_option_init_struct,
s390_handle_option, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_HANDLE_OPTION, TARGET_OPTION_OPTIMIZATION_TABLE,
TARGET_OPTION_INIT_STRUCT): Move to s390-common.c.
* config/s390/s390.h (processor_flags_table): Declare.
* config/score/score.c (score_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
TARGET_OPTION_OPTIMIZATION_TABLE, MASK_ALL_CPU_BITS,
score_handle_option): Move to score-common.c.
* config/sh/sh.c (sh_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE, TARGET_OPTION_INIT_STRUCT,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION,
sh_handle_option, sh_option_init_struct): Move to sh-common.c.
* config/sparc/sparc.c: Include common/common-target.h.
(sparc_option_optimization_table, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to sparc-common.c.
* config/spu/spu.c (TARGET_DEFAULT_TARGET_FLAGS,
TARGET_OPTION_INIT_STRUCT, TARGET_EXCEPT_UNWIND_INFO,
spu_option_init_struct): Move to spu-common.c.
* config/stormy16/stormy16.c (xstorym16_option_optimization_table,
TARGET_OPTION_OPTIMIZATION_TABLE): Move to xstormy16-common.c.
* config/v850/v850.c (small_memory_physical_max,
v850_handle_memory_optionn v850_handle_option,
v850_option_optimization_table, TARGET_DEFAULT_TARGET_FLAGS,
TARGET_HANDLE_OPTION, TARGET_OPTION_OPTIMIZATION_TABLE): Move to
v850-common.c.
* config/vax/vax.c (TARGET_DEFAULT_TARGET_FLAGS): Move to
vax-common.c.
* config/xtensa/xtensa.c (xtensa_option_optimization_table,
TARGET_DEFAULT_TARGET_FLAGS, TARGET_OPTION_OPTIMIZATION_TABLE):
Move to xtensa-common.c.
* cfglayout.c: Include common/common-target.h.
(fixup_reorder_chain): Use targetm_common.have_named_sections.
* cfgrtl.c: Include common/common-target.h.
(force_nonfallthru_and_redirect, commit_one_edge_insertion): Use
targetm_common.have_named_sections.
* dbxout.c: Include common/common-target.h.
(dbxout_function_end): Use targetm_common.have_named_sections.
* defaults.h (STACK_OLD_CHECK_PROTECT, STACK_CHECK_PROTECT): Use
targetm_common.except_unwind_info.
* dwarf2out.c: Include common/common-target.h.
(dwarf2out_do_frame, dwarf2out_do_cfi_asm,
dwarf2out_begin_prologue, dwarf2out_frame_init,
dwarf2out_frame_finish, dwarf2out_assembly_start): Use
targetm_common.except_unwind_info.
* except.c: Include common/common-target.h.
(init_eh, finish_eh_generation,
output_one_function_exception_table): Use
targetm_common.except_unwind_info.
(switch_to_exception_section): Use
targetm_common.have_named_sections.
* explow.c: Include common/common-target.h.
* expr.c: Include common/common-target.h.
(build_personality_function): Use
targetm_common.except_unwind_info.
* function.c: Include common/common-target.h.
(expand_function_end): Use targetm_common.except_unwind_info.
* haifa-sched.c: Include common/common-target.h.
(sched_create_recovery_edges): Use
targetm_common.have_named_sections.
* lto-opts.c: Include common/common-target.h instead of target.h.
(lto_reissue_options): Use targetm_common.handle_option.
* opts.c: Include common/common-target.h.
(target_handle_option): Use targetm_common.handle_option.
(init_options_struct): Update comment referring to
targetm.target_option.optimization. Use
targetm_common.default_target_flags,
targetm_common.unwind_tables_default and
targetm_common.option_init_struct.
(default_options_optimization): Use
targetm_common.option_optimization_table.
(finish_options): Use targetm_common.except_unwind_info,
targetm_common.unwind_tables_default,
targetm_common.have_named_sections and
targetm_common.supports_split_stack.
* toplev.c: Include common/common-target.h.
(process_options): Use targetm_common.have_named_sections.
* tree-tailcall.c: Include common/common-target.h.
(suitable_for_tail_call_opt_p): Use
targetm_common.except_unwind_info.
* tree.c: Include common/common-target.h.
(build_common_builtin_nodes): Use
targetm_common.except_unwind_info.
* varasm.c: Include common/common-target.h.
(resolve_unique_section, hot_function_section,
default_function_section): Use targetm_common.have_named_sections.
ada:
* gcc-interface/Make-lang.in (gnatbind$(exeext)): Use ggc-none.o.
(ada/utils.o): Update dependencies.
* gcc-interface/Makefile.in (EXTRA_GNATTOOLS_OBJS): Add
../../../libcpp/libcpp.a.
* gcc-interface/utils.c: Include common/common-target.h.
(process_attributes): Use targetm_common.have_named_sections.
c-family:
* c-common.c: Include common/common-target.h.
(handle_section_attribute): Use
targetm_common.have_named_sections.
* c-cppbuiltin.c: Include common/common-target.h.
(c_cpp_builtins): Use targetm_common.except_unwind_info.
cp:
* Make-lang.in (cp/method.o): Update dependencies.
* method.c: Include common/common-target.h.
(use_thunk): Use targetm_common.have_named_sections.
go:
* Make-lang.in (go/go-lang.o, go/go-backend.o): Update
dependencies.
* go-backend.c: Include common/common-target.h.
(go_write_export_data): Use targetm_common.have_named_sections.
* go-lang.c: Include common/common-target.h.
(go_langhook_init_options_struct): Use
targetm_common.supports_split_stack.
po:
* exgettext: Handle common/ directory and subdirectories.
From-SVN: r175064
|
|
* function.h (struct stack_usage): Remove dynamic_alloc_count field.
(current_function_dynamic_alloc_count): Delete.
* builtins.c (expand_builtin_setjmp_setup): Do not set calls_setjmp.
(expand_builtin_nonlocal_goto): Remove obsolete comment.
(expand_builtin_update_setjmp_buf): Remove dead code.
* cse.c (cse_find_path): Do not follow a single abnormal incoming edge.
* explow.c (allocate_dynamic_stack_space): Remove SETJMP_VIA_SAVE_AREA
support.
* function.c (instantiate_virtual_regs): Likewise.
* postreload-gcse.c (bb_has_well_behaved_predecessors): Return false
for a block with a single abnormal incoming edge.
* config/sparc/sparc.h (STACK_SAVEAREA_MODE): Define.
* config/sparc/sparc-protos.h (load_got_register): Declare.
* config/sparc/sparc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
(load_got_register): Make global.
(sparc_frame_pointer_required): Add 'static'.
(sparc_can_eliminate): Likewise. Call sparc_frame_pointer_required.
(sparc_builtin_setjmp_frame_value): New function.
* config/sparc/sparc.md (UNSPECV_SETJMP): Remove.
(save_stack_nonlocal): New expander.
(restore_stack_nonlocal): Likewise.
(nonlocal_goto): Remove modes, adjust predicates and reimplement.
(nonlocal_goto_internal): New insn.
(goto_handler_and_restore): Delete.
(builtin_setjmp_setup): Likewise.
(do_builtin_setjmp_setup): Likewise.
(setjmp): Likewise.
(builtin_setjmp_receiver): New expander.
From-SVN: r174564
|
|
* common.opt (flag_stack_usage_info): New variable.
(-Wstack-usage): New option.
* doc/invoke.texi (Warning options): Document -Wstack-usage.
* opts.c (common_handle_option) <OPT_Wstack_usage_>: New case.
<OPT_fstack_usage>: Likewise.
* toplev.c (output_stack_usage): Handle -Wstack-usage.
* calls.c (expand_call): Test flag_stack_usage_info variable instead
of flag_stack_usage.
(emit_library_call_value_1): Likewise.
* explow.c (allocate_dynamic_stack_space): Likewise.
* function.c (instantiate_virtual_regs ): Likewise.
(prepare_function_start): Likewise.
(rest_of_handle_thread_prologue_and_epilogue): Likewise.
* config/alpha/alpha.c (alpha_expand_prologue): Likewise.
* config/arm/arm.c (arm_expand_prologue): Likewise.
(thumb1_expand_prologue): Likewise.
* config/avr/avr.c (expand_prologue): Likewise.
* config/i386/i386.c (ix86_expand_prologue): Likewise.
* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
* config/m68k/m68k.c (m68k_expand_prologue): Likewise.
* config/mips/mips.c (mips_expand_prologue): Likewise.
* config/pa/pa.c (hppa_expand_prologue): Likewise.
* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
* config/s390/s390.c (s390_emit_prologue): Likewise.
* config/sh/sh.c (sh_expand_prologue): Likewise.
* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
* config/spu/spu.c (spu_expand_prologue): Likewise.
From-SVN: r174182
|
|
2011-05-04 Richard Guenther <rguenther@suse.de>
* explow.c (promote_mode): Move variable declarations before code.
From-SVN: r173376
|
|
libcall arguments.
2011-05-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* calls.c (emit_library_call_value_1): Invoke
promote_function_mode hook on libcall arguments.
* explow.c (promote_function_mode, promote_mode): Handle TYPE
argument being NULL.
* targhooks.c (default_promote_function_mode): Lisewise.
* config/s390/s390.c (s390_promote_function_mode): Likewise.
* config/sparc/sparc.c (sparc_promote_function_mode): Likewise.
* doc/tm.texi: Document that TYPE argument might be NULL.
From-SVN: r173371
|
|
"enum insn_code".
gcc/
* optabs.h (emit_unop_insn, maybe_emit_unop_insn): Change insn code
parameter from "int" to "enum insn_code".
(expand_operand_type): New enum.
(expand_operand): New structure.
(create_expand_operand): New function.
(create_fixed_operand, create_output_operand): Likewise
(create_input_operand, create_convert_operand_to): Likewise.
(create_convert_operand_from, create_address_operand): Likewise.
(create_integer_operand): Likewise.
(create_convert_operand_from_type, maybe_legitimize_operands): Declare.
(maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise.
(expand_insn, expand_jump_insn): Likewise.
* builtins.c (expand_builtin_prefetch): Use the new interfaces.
(expand_builtin_interclass_mathfn, expand_builtin_strlen): Likewise.
(expand_movstr, expand_builtin___clear_cache): Likewise.
(expand_builtin_lock_release): Likewise.
* explow.c (allocate_dynamic_stack_space): Likewise.
(probe_stack_range): Likewise. Allow check_stack to FAIL,
and use the default handling in that case.
* expmed.c (check_predicate_volatile_ok): Delete.
(store_bit_field_1, extract_bit_field_1): Use the new interfaces.
(emit_cstore): Likewise.
* expr.c (emit_block_move_via_movmem): Likewise.
(set_storage_via_setmem, expand_assignment): Likewise.
(emit_storent_insn, try_casesi): Likewise.
(emit_single_push_insn): Likewise. Allow the expansion to fail.
* optabs.c (expand_widen_pattern_expr, expand_ternary_op): Likewise.
(expand_vec_shift_expr, expand_binop_directly): Likewise.
(expand_twoval_unop, expand_twoval_binop): Likewise.
(expand_unop_direct, emit_indirect_jump): Likewise.
(emit_conditional_move, vector_compare_rtx): Likewise.
(expand_vec_cond_expr, expand_val_compare_and_swap_1): Likewise.
(expand_sync_operation, expand_sync_fetch_operation): Likewise.
(expand_sync_lock_test_and_set): Likewise.
(maybe_emit_unop_insn): Likewise. Change icode to an insn_code.
(emit_unop_insn): Likewise.
(expand_copysign_absneg): Change icode to an insn_code.
(create_convert_operand_from_type): New function.
(maybe_legitimize_operand, maybe_legitimize_operands): Likewise.
(maybe_gen_insn, maybe_expand_insn, maybe_expand_jump_insn): Likewise.
(expand_insn, expand_jump_insn): Likewise.
* config/i386/i386.md (setmem<mode>): Use nonmemory_operand rather
than const_int_operand for operand 2.
From-SVN: r171341
|
|
* explow.c (emit_stack_save): Remove 'after' parameter.
(emit_stack_restore): Likewise.
* expr.h: Update to match.
* builtins.c, calls.c, stmt.c: Likewise.
* config/alpha/alpha.md, config/avr/avr.md: Likewise.
* config/mips/mips.md, config/pa/pa.md, config/vax/vax.md: Likewise.
* function.c (expand_function_end): Insert the emit_stack_save
sequence before parm_birth_insn instead of after.
From-SVN: r170663
|
|
PR middle-end/46894
* explow.c (allocate_dynamic_stack_space): Do not assume more than
BITS_PER_UNIT alignment if STACK_DYNAMIC_OFFSET or STACK_POINTER_OFFSET
are defined.
From-SVN: r168968
|
|
* hwint.c: New. Extracted from toplev.c.
* hwint.h (clz_hwi, ctz_hwi, ffs_hwi, exact_log2, floor_log2):
Move from toplev.h.
* toplev.c (clz_hwi, ctz_hwi, ffs_hwi, exact_log2, floor_log2):
Move to hwint.c.
* toplev.h (clz_hwi, ctz_hwi, ffs_hwi, exact_log2, floor_log2):
Move to hwint.h.
* builtins.c, combine.c, config/i386/winnt.c, double-int.c,
explow.c, expmed.c, fold-const.c, ggc-page.c, ggc-zone.c, ifcvt.c,
ipa-struct-reorg.c, ira-color.c, matrix-reorg.c, omp-low.c,
real.c, recog.c, reload.c, rtlanal.c, simplify-rtx.c,
stor-layout.c, tree-dfa.c, tree-ssa-alias.c,
tree-ssa-loop-niter.c, tree-vect-data-refs.c,
tree-vect-loop-manip.c, tree-vect-loop.c, tree-vect-stmts.c,
tree-vrp.c: Don't include toplev.h.
* genattrtab.c, genconditions.c, genemit.c, genextract.c,
genoutput.c, genpeep.c, genpreds.c, genrecog.c: Don't include
toplev.h in generated output.
* Makefile.in (OBJS-common): Add hwint.o.
Dependencies for above files changed to remove toplev.h.
(hwint.o): New.
(insn-attrtab.o, insn-emit.o, insn-extract.o, insn-output.o,
insn-peep.o, insn-preds.o, insn-recog.o): Don't depend on
toplev.h.
* config/i386/t-cygming (winnt.o): Don't depend on toplev.h.
* config/i386/t-interix (winnt.o): Don't depend on toplev.h.
fortran:
* trans-common.c: Don't include toplev.h.
java:
* boehm.c: Don't include toplev.h.
* Make-lang.in (java/boehm.o): Don't depend on toplev.h.
lto:
* lto-object.c: Don't include toplev.h.
* Make-lang.in (lto/lto-object.o): Don't depend on toplev.h.
From-SVN: r167301
|
|
* explow.c (allocate_dynamic_stack_space): Check
MALLOC_ABI_ALIGNMENT.
From-SVN: r166393
|
|
gcc/:
PR target/46084
* explow.c (allocate_dynamic_stack_space): If flag_split_stack,
request enough additional space for alignment, and force
alignment.
testsuite/:
* gcc.target/i386/pr46084.c: New test.
From-SVN: r166383
|
|
variable)
PR rtl-opt/33721
* explow.c (allocate_dynamic_stack_space): Add REQUIRED_ALIGN parm,
remove TARGET parm, convert KNOWN_ALIGN parm to SIZE_ALIGN. Honor
required_align, tidy the code a bit. Emit split_stack code in the
right place. Mark the return value with the alignment properly.
* expr.h (allocate_dynamic_stack_space): Update decl.
* builtins.c (expand_builtin_apply): Update call to
allocate_dynamic_stack_space.
(expand_builtin_alloca): Likewise. Remove TARGET parameter.
* calls.c (initialize_argument_information): Update call to
allocate_dynamic_stack_space.
(expand_call): Likewise.
* cfgexpand.c (get_decl_align_unit): Don't limit alignment.
Don't update_stack_alignment here.
(alloc_stack_frame_space): Make ALIGN unsigned.
(stack_var_cmp): Sort by alignment too.
(partition_stack_vars): Don't merge large and small alignment vars.
(expand_one_stack_var_at): Add BASE and BASE_ALIGN parameters.
Take care when BASE is not virtual_stack_vars_rtx.
(expand_stack_vars): Allocate dynamic stack space for large
alignment variables.
(expand_one_stack_var): Update all to expand_one_stack_var_at.
(defer_stack_allocation): True for large alignment vars.
(update_stack_alignment): Merge into ...
(expand_one_var): ... here.
(gimple_expand_cfg): Place code from expand_stack_vars.
From-SVN: r165240
|
|
gcc/:
* common.opt (fsplit-stack): New option.
* opts.c (decode_options): Set flag_split_stack to final value.
* target.def (supports_split_stack): New hook.
* gcc.c (STACK_SPLIT_SPEC): Define.
(LINK_COMMAND_SPEC): Use STACK_SPLIT_SPEC.
* doc/invoke.texi (Option Summary): Mention -fsplit-stack.
(Code Gen Options): Document -fsplit-stack.
* doc/extend.texi (Function Attributes): Mention no_split_stack.
(Function Attributes): Document no_split_stack.
* doc/tm.texi.in (Stack Smashing Protection): Add @hook
TARGET_SUPPORTS_SPLIT_STACK.
* doc/tm.texi: Rebuild.
* function.c (thread_prologue_and_epilogue_insns): If
flag_split_stack, add split stack prologue.
* explow.c (allocate_dynamic_stack_space): Support -fsplit-stack.
* varasm.c (saw_no_split_stack): New static variable.
(assemble_start_function): Set saw_no_split_stack if the function
has the no_split_stack attribute.
(file_end_indicate_split_stack): New function.
* output.h (file_end_indicate_split_stack): Declare.
* libgcc-std.ver (GCC_4.6.0): Add -fsplit-stack support variables
and function.
* doc/libgcc.texi (Miscellaneous routines): Document -fsplit-stack
routines.
* config/i386/i386.c (ix86_option_override_internal): Don't set
expand_builtin_va_start to NULL if -fsplit-stack.
(ix86_function_regparm): Reduce local regparm by 1 for 32-bit
-fsplit-stack.
(ix86_va_start): If -fsplit-stack, get overflow pointer from
scratch register set by prologue.
(ix86_code_end): If -fsplit-stack, call
file_end_indicate_split_stack.
(ix86_supports_split_stack): New static function.
(SPLIT_STACK_AVAILABLE): Define.
(split_stack_prologue_scratch_regno): New static function.
(split_stack_fn): New static variable.
(ix86_expand_split_stack_prologue): New function.
(ix86_live_on_entry): New static function.
(ix86_legitimate_address_p): Handle UNSPEC_STACK_CHECK.
(output_pic_addr_const): Likewise.
(i386_asm_output_addr_const_extra): Likewise.
(ix86_expand_call): Change return type to rtx. Return the new
call instruction.
(TARGET_SUPPORTS_SPLIT_STACK): Define.
(TARGET_EXTRA_LIVE_ON_ENTRY): Define.
* config/i386/i386.md (UNSPEC_STACK_CHECK): Define.
(split_stack_prologue, split_stack_return): New insns.
(split_stack_space_check): New insn.
* config/i386/i386.h (struct machine_function): Add
split_stack_varargs_pointer field.
* config/i386/linux.h (TARGET_CAN_SPLIT_STACK): Define.
(TARGET_THREAD_SPLIT_STACK_OFFSET): Define.
* config/i386/linux64.h (TARGET_CAN_SPLIT_STACK): Define.
(TARGET_THREAD_SPLIT_STACK_OFFSET): Define.
* config/i386/i386-protos.h (ix86_expand_split_stack_prologue):
Declare.
(ix86_expand_call): Update declaration.
gcc/c-family/:
* c-common.c (c_common_attribute_table): Add no_split_stack.
(handle_no_split_stack_attribute): New static function.
gcc/testsuite/:
* lib/target-supports.exp (check_effective_target_split_stack):
New procedure.
* gcc.dg/split-1.c: New test.
* gcc.dg/split-2.c: New test.
* gcc.dg/split-3.c: New test.
* gcc.dg/split-4.c: New test.
libgcc/:
* generic-morestack.h: New file.
* generic-morestack.c: New file.
* generic-morestack-thread.c: New file.
* config/i386/morestack.S: New file.
* config/t-stack: New file.
* config/i386/t-stack-i386: New file.
* config.host (i[34567]86-*-linux* and friends): Add t-stack and
i386/t-stack-i386 to tmake_file.
From-SVN: r164661
|
|
aligned function argument from unaligned stack after alloca)
PR middle-end/45234
* rtl.h (enum global_rtl_index): Add
GR_VIRTUAL_PREFERRED_STACK_BOUNDARY.
(LAST_VIRTUAL_POINTER_REGISTER): Define.
(virtual_preferred_stack_boundary_rtx,
VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM): Define.
(LAST_VIRTUAL_REGISTER): Increase by one.
(REGNO_PTR_FRAME_P): Use LAST_VIRTUAL_POINTER_REGISTER
instead of LAST_VIRTUAL_REGISTER.
* function.c (instantiate_new_reg): Handle
virtual_preferred_stack_boundary_rtx.
* emit-rtl.c (init_virtual_regs): Handle
VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM.
(init_emit_regs): Initialize virtual_preferred_stack_boundary_rtx.
* explow.c (round_push): If crtl->preferred_stack_boundary
is smaller than MAX_SUPPORTED_STACK_ALIGNMENT, use
virtual_preferred_stack_boundary_rtx alignment instead of
crtl->preferred_stack_boundary alignment.
(allocate_dynamic_stack_space): Use CONST_INT_P and REG_P
macros. Never decrease crtl->preferred_stack_boundary,
use crtl->preferred_stack_boundary or MAX_SUPPORTED_STACK_ALIGNMENT
instead of PREFERRED_STACK_BOUNDARY. Don't modify
stack_pointer_delta in dynamic allocation, even when size
is constant.
(probe_stack_range, anti_adjust_stack_and_probe): Use CONST_INT_P
macro.
* print-rtl.c (print_rtx): Handle
VIRTUAL_PREFERRED_STACK_BOUNDARY_REGNUM.
* config/alpha/alpha.h (NONSTRICT_REG_OK_FP_BASE_P): Use
LAST_VIRTUAL_POINTER_REGISTER instead of LAST_VIRTUAL_REGISTER.
* config/frv/frv.c (frv_emit_movsi): Likewise.
* config/arm/arm.c (thumb1_legitimate_address_p): Likewise.
* config/rs6000/rs6000.c (virtual_stack_registers_memory_p):
Likewise.
* gcc.dg/torture/stackalign/alloca-6.c: New test.
* gcc.target/i386/pr45234.c: New test.
Revert:
2010-09-17 H.J. Lu <hongjiu.lu@intel.com>
PR middle-end/45234
* calls.c (expand_call): Make sure that all variable sized
adjustments are multiple of preferred stack boundary after
stack alignment.
From-SVN: r164593
|
|
Stack usage support
* common.opt (-fstack-usage): New option.
* doc/invoke.texi (Debugging options): Document it.
* builtins.c (expand_builtin_apply): Pass TRUE as 4th argument to
allocate_dynamic_stack_space.
(expand_builtin_alloca): Add 4th bool parameter CANNOT_ACCUMULATE
and propagate it to allocate_dynamic_stack_space.
(expand_builtin) <BUILT_IN_ALLOCA>: Adjust for above change.
* calls.c (initialize_argument_information): Pass TRUE as 4th
argument to allocate_dynamic_stack_space.
(expand_call): Set current_function_has_unbounded_dynamic_stack_size
to 1 when pushing a variable-sized argument onto the stack. Pass
TRUE as 4th argument to allocate_dynamic_stack_space.
Update current_function_pushed_stack_size.
(emit_library_call_value_1): Likewise.
* explow.c (allocate_dynamic_stack_space): Add 4th bool parameter
CANNOT_ACCUMULATE. If flag_stack_usage, look into the size and
attempt to find an upper bound. Remove redundant code for the
SETJMP_VIA_SAVE_AREA case.
* expr.h (allocate_dynamic_stack_space): Add 4th bool parameter.
* function.h (struct stack_usage): New structure.
(current_function_static_stack_size): New macro.
(current_function_dynamic_stack_size): Likewise.
(current_function_pushed_stack_size): Likewise.
(current_function_dynamic_alloc_count): Likewise.
(current_function_has_unbounded_dynamic_stack_size): Likewise.
(current_function_allocates_dynamic_stack_space): Likewise.
(struct function): Add new field 'su'.
* function.c (instantiate_virtual_regs): If SETJMP_VIA_SAVE_AREA,
add the value of the dynamic offset to the dynamic stack usage.
(gimplify_parameters): Set ALLOCA_FOR_VAR_P on call to BUILT_IN_ALLOCA
for variable-sized objects.
(prepare_function_start): Allocate cfun->su if flag_stack_usage.
(rest_of_handle_thread_prologue_and_epilogue): Call output_stack_usage.
* gimplify.c (gimplify_decl_expr): Set ALLOCA_FOR_VAR_P on call to
BUILT_IN_ALLOCA for variable-sized objects.
* output.h (output_stack_usage): Declare.
* toplev.c (stack_usage_file): New file pointer.
(output_stack_usage): New function.
(open_auxiliary_file): Likewise.
(lang_dependent_init): Open file if flag_stack_usage is set.
(finalize): Close file if stack_usage_file is not null.
* tree.h (ALLOCA_FOR_VAR_P): New macro.
* config/alpha/alpha.c (compute_frame_size): New function.
(alpha_expand_prologue): Use it.
(alpha_start_function): Likewise.
(alpha_expand_epilogue): Likewise. Set stack usage info.
* config/i386/i386.c (ix86_expand_prologue): Likewise.
* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
* config/mips/mips.c (mips_expand_prologue): Likewise.
* config/pa/pa.c (hppa_expand_prologue): Likewise.
* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
testsuite/
* lib/gcc-dg.exp (cleanup-stack-usage): New procedure.
* lib/scanasm.exp (scan-stack-usage): Likewise.
(scan-stack-usage-not): Likewise.
* gcc.dg/stack-usage-1.c: New test.
* gcc.target/i386/stack-usage-realign.c: Likewise.
From-SVN: r163660
|
|
* toplev.h (ctz_hwi, clz_hwi, ffs_hwi): New.
(floor_log2): Use clz_hwi.
(exact_log2): Use ctz_hwi.
* toplev.c (ctz_hwi, clz_hwi, ffs_hwi): New.
* builtins.c (fold_builtin_bitop): Use them.
* simplify-rtx.c (simplify_const_unary_operation): Likewise.
* combine.c (get_pos_from_mask): Use ctz_hwi.
* double-int.c (double_int_ctz): Likewise.
* explow.c (force_reg): Likewise.
* tree.h (SET_DECL_OFFSET_ALIGN): Use ffs_hwi.
From-SVN: r162920
|
|
2010-07-08 Manuel López-Ibáñez <manu@gcc.gnu.org>
* toplev.h: Do not include diagnostic-core.h.
Include diagnostic-core.h in every file that includes toplev.h.
* c-tree.h: Do not include toplev.h.
* pretty-print.h: Update comment.
* Makefile.in: Update dependencies.
* alias.c: Include diagnostic-core.h in every file that includes
toplev.h.
* attribs.c: Likewise.
* auto-inc-dec.c: Likewise.
* bb-reorder.c: Likewise.
* bt-load.c: Likewise.
* caller-save.c: Likewise.
* calls.c: Likewise.
* cfg.c: Likewise.
* cfganal.c: Likewise.
* cfgbuild.c: Likewise.
* cfgcleanup.c: Likewise.
* cfghooks.c: Likewise.
* cfgloop.c: Likewise.
* combine.c: Likewise.
* config/alpha/alpha.c: Likewise.
* config/arc/arc.c: Likewise.
* config/arm/arm.c: Likewise.
* config/arm/pe.c: Likewise.
* config/avr/avr.c: Likewise.
* config/bfin/bfin.c: Likewise.
* config/cris/cris.c: Likewise.
* config/crx/crx.c: Likewise.
* config/darwin-c.c: Likewise.
* config/darwin.c: Likewise.
* config/fr30/fr30.c: Likewise.
* config/frv/frv.c: Likewise.
* config/h8300/h8300.c: Likewise.
* config/host-darwin.c: Likewise.
* config/i386/i386.c: Likewise.
* config/i386/netware.c: Likewise.
* config/i386/nwld.c: Likewise.
* config/i386/winnt-cxx.c: Likewise.
* config/i386/winnt-stubs.c: Likewise.
* config/i386/winnt.c: Likewise.
* config/ia64/ia64-c.c: Likewise.
* config/ia64/ia64.c: Likewise.
* config/iq2000/iq2000.c: Likewise.
* config/lm32/lm32.c: Likewise.
* config/m32c/m32c-pragma.c: Likewise.
* config/m32c/m32c.c: Likewise.
* config/m32r/m32r.c: Likewise.
* config/m68hc11/m68hc11.c: Likewise.
* config/m68k/m68k.c: Likewise.
* config/mcore/mcore.c: Likewise.
* config/mep/mep-pragma.c: Likewise.
* config/mep/mep.c: Likewise.
* config/mmix/mmix.c: Likewise.
* config/mn10300/mn10300.c: Likewise.
* config/moxie/moxie.c: Likewise.
* config/pa/pa.c: Likewise.
* config/pdp11/pdp11.c: Likewise.
* config/picochip/picochip.c: Likewise.
* config/rs6000/rs6000-c.c: Likewise.
* config/rs6000/rs6000.c: Likewise.
* config/rx/rx.c: Likewise.
* config/s390/s390.c: Likewise.
* config/score/score.c: Likewise.
* config/score/score3.c: Likewise.
* config/score/score7.c: Likewise.
* config/sh/sh.c: Likewise.
* config/sh/symbian-base.c: Likewise.
* config/sh/symbian-c.c: Likewise.
* config/sh/symbian-cxx.c: Likewise.
* config/sol2-c.c: Likewise.
* config/sol2.c: Likewise.
* config/sparc/sparc.c: Likewise.
* config/spu/spu.c: Likewise.
* config/stormy16/stormy16.c: Likewise.
* config/v850/v850-c.c: Likewise.
* config/v850/v850.c: Likewise.
* config/vax/vax.c: Likewise.
* config/vxworks.c: Likewise.
* config/xtensa/xtensa.c: Likewise.
* convert.c: Likewise.
* cse.c: Likewise.
* cselib.c: Likewise.
* dbgcnt.c: Likewise.
* dbxout.c: Likewise.
* ddg.c: Likewise.
* dominance.c: Likewise.
* emit-rtl.c: Likewise.
* explow.c: Likewise.
* expmed.c: Likewise.
* fixed-value.c: Likewise.
* fold-const.c: Likewise.
* fwprop.c: Likewise.
* gcse.c: Likewise.
* ggc-common.c: Likewise.
* ggc-page.c: Likewise.
* ggc-zone.c: Likewise.
* gimple-low.c: Likewise.
* gimplify.c: Likewise.
* graph.c: Likewise.
* haifa-sched.c: Likewise.
* ifcvt.c: Likewise.
* implicit-zee.c: Likewise.
* integrate.c: Likewise.
* ira-build.c: Likewise.
* ira-color.c: Likewise.
* ira-conflicts.c: Likewise.
* ira-costs.c: Likewise.
* ira-lives.c: Likewise.
* ira.c: Likewise.
* lists.c: Likewise.
* loop-doloop.c: Likewise.
* loop-iv.c: Likewise.
* lto-opts.c: Likewise.
* lto-symtab.c: Likewise.
* main.c: Likewise.
* modulo-sched.c: Likewise.
* optabs.c: Likewise.
* params.c: Likewise.
* plugin.c: Likewise.
* postreload-gcse.c: Likewise.
* postreload.c: Likewise.
* predict.c: Likewise.
* profile.c: Likewise.
* real.c: Likewise.
* regcprop.c: Likewise.
* reginfo.c: Likewise.
* regmove.c: Likewise.
* reorg.c: Likewise.
* resource.c: Likewise.
* rtl.c: Likewise.
* rtlanal.c: Likewise.
* sched-deps.c: Likewise.
* sched-ebb.c: Likewise.
* sched-rgn.c: Likewise.
* sdbout.c: Likewise.
* sel-sched-dump.c: Likewise.
* sel-sched-ir.c: Likewise.
* simplify-rtx.c: Likewise.
* stmt.c: Likewise.
* stor-layout.c: Likewise.
* store-motion.c: Likewise.
* targhooks.c: Likewise.
* tree-cfg.c: Likewise.
* tree-cfgcleanup.c: Likewise.
* tree-dump.c: Likewise.
* tree-eh.c: Likewise.
* tree-inline.c: Likewise.
* tree-nomudflap.c: Likewise.
* tree-object-size.c: Likewise.
* tree-optimize.c: Likewise.
* tree-outof-ssa.c: Likewise.
* tree-phinodes.c: Likewise.
* tree-profile.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-coalesce.c: Likewise.
* tree-ssa-live.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-ssa-loop-prefetch.c: Likewise.
* tree-ssa-loop.c: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa-uninit.c: Likewise.
* tree-ssa.c: Likewise.
* tree-vect-data-refs.c: Likewise.
* tree-vect-loop-manip.c: Likewise.
* tree-vect-loop.c: Likewise.
* tree-vect-patterns.c: Likewise.
* tree-vect-stmts.c: Likewise.
* tree-vrp.c: Likewise.
* varasm.c: Likewise.
* vec.c: Likewise.
* web.c: Likewise.
* xcoffout.c: Likewise.
c-family/
* c-common.h: Include diagnostic-core.h. Error if already
included.
* c-semantics.c: Do not define GCC_DIAG_STYLE here.
cp/
* cp-tree.h: Do not include toplev.h.
java/
* boehm.c: Include diagnostic-core.h in every file that includes
toplev.h.
* class.c: Likewise.
* constants.c: Likewise.
* decl.c: Likewise.
* except.c: Likewise.
* expr.c: Likewise.
* jcf-parse.c: Likewise.
* mangle.c: Likewise.
* mangle_name.c: Likewise.
* resource.c: Likewise.
* typeck.c: Likewise.
* verify-glue.c: Likewise.
ada/
* gcc-interface/utils.c: Include diagnostic-core.h in every file
that includes toplev.h.
lto/
* lto-coff.c: Include diagnostic-core.h in every file that
includes toplev.h.
* lto-elf.c: Likewise.
* lto-lang.c: Likewise.
* lto-macho.c: Likewise.
From-SVN: r161943
|
|
* expr.h (emit_stack_probe): Declare.
* explow.c (emit_stack_probe): Make global.
(anti_adjust_stack_and_probe): Fix comments.
* config/sparc/linux.h (STACK_CHECK_STATIC_BUILTIN): Define to 1.
* config/sparc/linux64.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
* config/sparc/sol2.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
* config/sparc/sparc.c: Include except.h.
(sparc_emit_probe_stack_range): New function.
(output_probe_stack_range): Likewise.
(sparc_expand_prologue): Invoke sparc_emit_probe_stack_range if static
built-in stack checking is enabled.
* config/sparc/sparc-protos.h (output_probe_stack_range): Declare.
* config/sparc/sparc.md (UNSPECV_PROBE_STACK_RANGE): New constant.
(probe_stack_range): New insn.
From-SVN: r161749
|
|
instead of SYMBOL_REF rtx.
gcc/ChangeLog:
* explow.c (set_stack_check_libfunc): Adjust to accept name as a
string instead of SYMBOL_REF rtx.
* rtl.h (set_stack_check_libfunc): Move prototype from here...
* libfuncs.h: ...to here. Adjust for explow.c change.
ada/ChangeLog:
* gcc-interface/trans.c: Do not include rtl.h, insclude libfuncs.h.
(gigi): Adjust call to set_stack_check_libfunc.
From-SVN: r159900
|
|
* doc/tm.texi (STACK_CHECK_PROBE_LOAD): Delete.
* expr.h (STACK_CHECK_PROBE_LOAD): Likewise.
* explow.c (emit_stack_probe): Do not test STACK_CHECK_PROBE_LOAD.
* system.h (STACK_CHECK_PROBE_LOAD): Poison.
From-SVN: r155199
|
|
PR target/10127
PR ada/20548
* expr.h (anti_adjust_stack_and_probe): Declare.
* explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
parameter and rewrite head comment.
(allocate_dynamic_stack_space): Adjust call to above function.
* function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
* tree.h (dwarf2out_args_size): Delete.
* dwarf2out.c (dwarf2out_args_size): Make static and move around.
(dwarf2out_args_size_adjust): Delete prototype and move around.
(dwarf2out_frame_debug_expr): Do not record arg size adjustments for
ACCUMULATE_OUTGOING_ARGS targets.
From-SVN: r154079
|
|
PR ada/20548
* explow.c (probe_stack_range): Fix typo.
* config/sparc/sparc.md (probe_stack): New expander.
From-SVN: r154061
|
|
PR target/10127
PR ada/20548
* expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
(STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
(STACK_CHECK_MOVING_SP): Likewise.
* system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
* doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
* doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
Document PROBE_STACK.
* explow.c (anti_adjust_stack_and_probe): New function.
(allocate_dynamic_stack_space): Do not directly allocate space if
STACK_CHECK_MOVING_SP, instead invoke above function.
(emit_stack_probe): Handle probe_stack insn.
(PROBE_INTERVAL): New macro.
(STACK_GROW_OPTAB): Likewise.
(STACK_GROW_OFF): Likewise.
(probe_stack_range): Use Pmode and memory_address consistently. Fix
loop condition in the small constant case. Rewrite in the general
case to be immune to wraparounds. Make sure the address of probes
is valid. Try to use [base + disp] addressing mode if possible.
* ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
checking is enabled and STACK_CHECK_MOVING_SP.
* rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
return 1 for volatile references to the stack pointer.
* tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
__builtin_alloca if stack checking is enabled.
* unwind-dw2.c (uw_identify_context): Take into account whether the
context is that of a signal frame or not.
* config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
* config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
From-SVN: r153877
|
|
2009-10-26 Ben Elliston <bje@au.ibm.com>
Michael Meissner <meissner@linux.vnet.ibm.com>
Ulrich Weigand <uweigand@de.ibm.com>
* doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document.
(TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
(TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
* target.h (struct target_def): Add pointer_mode, address_mode,
and valid_pointer_mode to addr_space substructure.
* target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define.
(TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise.
(TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise.
(TARGET_ADDR_SPACE_HOOKS): Add them.
* targhooks.c (target_default_pointer_address_modes_p): New function.
* target.h (target_default_pointer_address_modes_p): Add prototype.
* targhooks.c (default_addr_space_pointer_mode): New function.
(default_addr_space_address_mode): Likewise.
(default_addr_space_valid_pointer_mode): Likewise.
* targhooks.h (default_addr_space_pointer_mode): Add prototype.
(default_addr_space_address_mode): Likewise.
(default_addr_space_valid_pointer_mode): Likewise.
* output.h (default_valid_pointer_mode): Move to ...
* targhooks.h (default_valid_pointer_mode): ... here.
* varasm.c (default_valid_pointer_mode): Move to ...
* targhooks.c (default_valid_pointer_mode): ... here.
* varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode
instead of targetm.valid_pointer_mode.
* fold-const.c (fit_double_type): Use int_or_pointer_precision.
* tree.c (integer_pow2p): Likewise.
(tree_log2): Likewise.
(tree_floor_log2): Likewise.
(signed_or_unsigned_type_for): Support pointer type of different size.
(int_or_pointer_precision): New function.
* tree.h (int_or_pointer_precision): Add prototype.
* stor-layout.c (layout_type): Set TYPE_PRECISION for offset types.
* varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of
incoming pointer type instead of POINTER_SIZE.
* tree.c (build_pointer_type): Use appropriate pointer mode
instead of ptr_mode.
(build_reference_type): Likewise.
* expr.c (store_expr): Likewise.
(expand_expr_addr_expr): Likewise.
* tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise.
* cfgexpand.c (expand_debug_expr): Likewise.
* auto-inc-dec.c: Include "target.h".
(try_merge): Use appropriate address mode instead of Pmode.
(find_inc): Likewise.
* combine.c (find_split_point): Likewise.
* cselib.c (cselib_record_sets): Likewise.
* dse.c (replace_inc_dec): Likewise.
(canon_address): Likewise.
* var-tracking.c (replace_expr_with_values): Likewise.
(count_uses): Likewise.
(add_uses): Likewise.
(add_stores): Likewise.
* emit-rtl.c: Include "target.h".
(adjust_address_1): Use appropriate address mode instead of Pmode.
(offset_address): Likewise.
* explow.c (break_out_memory_refs): Likewise.
(memory_address_addr_space): Likewise.
(promote_mode): Likewise.
* expr.c (move_by_pieces): Likewise.
(emit_block_move_via_loop): Likewise.
(store_by_pieces): Likewise.
(store_by_pieces_1): Likewise.
(expand_assignment): Likewise.
(store_constructor): Likewise.
(expand_expr_addr_expr): Likewise.
(expand_expr_real_1): Likewise.
* cfgexpand.c (expand_debug_expr): Likewise.
* ifcvt.c (noce_try_cmove_arith): Likewise.
* regcprop.c (kill_autoinc_value): Likewise.
* regmove.c (try_auto_increment): Likewise.
* reload.c (find_reloads): Likewise.
(find_reloads_address): Likewise.
(find_reloads_address_1): Likewise.
* sched-deps.c: Include "target.h".
(sched_analyze_1): Use appropriate address mode instead of Pmode.
(sched_analyze_2): Likewise.
* sel-sched-dump.c: Include "target.h".
(debug_mem_addr_value): Use appropriate address mode instead of Pmode.
* stor-layout.c (layout_type): Likewise.
* tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
(multiplier_allowed_in_address_p): Likewise.
(get_address_cost): Likewise.
* varasm.c (make_decl_rtl): Likewise.
* expr.c (expand_assignment): Always convert offsets to appropriate
address mode.
(store_expr): Likewise.
(store_constructor): Likewise.
(expand_expr_real_1): Likewise.
* reload.h (form_sum): Add MODE argument.
* reload.c (form_sum): Add MODE argument, use it instead of Pmode.
Update recursive calls.
(subst_indexed_address): Update calls to form_sum.
* tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument.
* tree-ssa-address.c: Include "target.h".
(templates): Replace by ...
(mem_addr_template_list): ... this new vector.
(TEMPL_IDX): Handle address space numbers.
(gen_addr_rtx): Add address mode argument, use it instead of Pmode.
(addr_for_mem_ref): Add ADDRSPACE argument. Use per-address-space
instead of global cache. Update call to gen_addr_rtx.
(valid_mem_ref_p): Update call to addr_for_mem_ref.
* expr.c (expand_expr_real_1): Update call to addr_for_mem_ref.
* rtl.h (convert_memory_address_addr_space): Add prototype.
(convert_memory_address): Define as macro.
* explow.c (convert_memory_address): Rename to ...
(convert_memory_address_addr_space): ... this. Add ADDRSPACE argument.
Use appropriate pointer and address modes instead of ptr_mode / Pmode.
Update recursive calls.
(memory_address_addr_space): Call convert_memory_address_addr_space.
* expmed.c (make_tree): Likewise.
* expr.c (expand_assignment): Likewise.
(expand_expr_addr_expr_1): Likewise. Also, add ADDRSPACE argument.
(expand_expr_addr_expr): Likewise. Also, update call.
* alias.c (find_base_value): Guard pointer size optimizations.
(find_base_term): Likewise.
* rtlanal.c (nonzero_bits1): Likewise.
(num_sign_bit_copies1): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.
* Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency.
(emit-rtl.o): Likewise.
(auto-inc-dec.o): Likewise.
(sched-deps.o): Likewise.
Co-Authored-By: Michael Meissner <meissner@linux.vnet.ibm.com>
Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com>
From-SVN: r153573
|