diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d1b78d1d5124eb8e66209d3d47c30cc52179a020..9e82c2fb169452849bd744d4b93f4339ec0ad96b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -911,6 +911,723 @@
 	* config/tilepro/tilepro.c: Likewise.
 	* config/xtensa/xtensa.c: Likewise.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* Makefile.in (PLUGIN_HEADERS): Add stringpool.h.
+
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-14  Joern Rennecke  <joern.rennecke@embecosm.com>
 
 	* config/arc/arc.md (doloop_begin_i): Remove extra alignment;
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 77fba80cffc57d9e29cb2cb44f97b010d120d5be..8cc8341048e7a4d9bdb91b49e5d35717c1013a43 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3115,7 +3115,7 @@ PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
   cppdefault.h flags.h $(MD5_H) params.def params.h prefix.h tree-inline.h \
   $(GIMPLE_PRETTY_PRINT_H) realmpfr.h \
   $(IPA_PROP_H) $(TARGET_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) \
-  version.h
+  version.h stringpool.h
 
 # generate the 'build fragment' b-header-vars
 s-header-vars: Makefile
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a9fd65b16cd749a30ad0d8de022fcbbaf5f3e130..4d55405f6948dc40d0d6ba22192a51450404835a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -64,6 +64,25 @@
 
 	* gcc-interface/trans.c: Include gimple.h and pointer-set.h.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
 	* gcc-interface/trans.c: Include gimplify.h.
diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c
index f5d7f2fc0c26ebf926ee11dfc204c5dc450362ac..0d72be255a59da7ab8c9b65100a100cb1a0b419d 100644
--- a/gcc/ada/gcc-interface/decl.c
+++ b/gcc/ada/gcc-interface/decl.c
@@ -28,6 +28,8 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "toplev.h"
 #include "ggc.h"
diff --git a/gcc/ada/gcc-interface/misc.c b/gcc/ada/gcc-interface/misc.c
index a82f6fd8f82cf68352938bfa44e8a295429c3b6c..fc74be28fb84393a02eac0c7e5055a2218989041 100644
--- a/gcc/ada/gcc-interface/misc.c
+++ b/gcc/ada/gcc-interface/misc.c
@@ -30,6 +30,8 @@
 #include "options.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "print-tree.h"
 #include "diagnostic.h"
 #include "target.h"
 #include "ggc.h"
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index f699fd85d18392a1431ea6c8ab1748783caca35d..53e66780f84a5fa4fd7b6c39a3e62a1651ad1ebc 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -28,6 +28,10 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "stmt.h"
+#include "varasm.h"
 #include "flags.h"
 #include "ggc.h"
 #include "output.h"
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index b92531b3fd6569d63f845a9136c57d4ead68d253..4995ca4e92c621ce24c47d517553f64471eb472c 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -28,6 +28,10 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "attribs.h"
+#include "varasm.h"
 #include "flags.h"
 #include "toplev.h"
 #include "diagnostic-core.h"
diff --git a/gcc/ada/gcc-interface/utils2.c b/gcc/ada/gcc-interface/utils2.c
index c45f1c3fc636ab434398a196e26aa875322799f8..184a223ff132d85fddb5c851f554f44ef0b2b230 100644
--- a/gcc/ada/gcc-interface/utils2.c
+++ b/gcc/ada/gcc-interface/utils2.c
@@ -28,6 +28,9 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "flags.h"
 #include "toplev.h"
 #include "ggc.h"
diff --git a/gcc/alias.c b/gcc/alias.c
index f0bb32bf32849b580a2d42a0e8de90315b2de4ce..68650f02110419c7b4179705856ae2e50bc0b80d 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
+#include "expr.h"
 #include "tm_p.h"
 #include "function.h"
 #include "alias.h"
diff --git a/gcc/asan.c b/gcc/asan.c
index d940b2c0f438b8d67f7ebe5b021abfbb023341d4..d44aa636c559665e91697d4766b051df4b207378 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -26,8 +26,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "calls.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "tree-iterator.h"
 #include "cgraph.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "asan.h"
diff --git a/gcc/attribs.c b/gcc/attribs.c
index 296bcd6eb740bc0a5bb215ab8417b0678a49d74c..19b697d416ffe05baa356f72a698b9fd7b79bbbf 100644
--- a/gcc/attribs.c
+++ b/gcc/attribs.c
@@ -22,6 +22,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
diff --git a/gcc/attribs.h b/gcc/attribs.h
new file mode 100644
index 0000000000000000000000000000000000000000..042e112ea8e89727749f193631357cef18a654ee
--- /dev/null
+++ b/gcc/attribs.h
@@ -0,0 +1,40 @@
+/* Declarations and definitions dealing with attribute handling.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_ATTRIBS_H
+#define GCC_ATTRIBS_H
+
+extern const struct attribute_spec *lookup_attribute_spec (const_tree);
+extern void init_attributes (void);
+
+/* Process the attributes listed in ATTRIBUTES and install them in *NODE,
+   which is either a DECL (including a TYPE_DECL) or a TYPE.  If a DECL,
+   it should be modified in place; if a TYPE, a copy should be created
+   unless ATTR_FLAG_TYPE_IN_PLACE is set in FLAGS.  FLAGS gives further
+   information, in the form of a bitwise OR of flags in enum attribute_flags
+   from tree.h.  Depending on these flags, some attributes may be
+   returned to be applied at a later stage (for example, to apply
+   a decl attribute to the declaration rather than to its type).  */
+extern tree decl_attributes (tree *, tree, int);
+
+extern bool cxx11_attribute_p (const_tree);
+extern tree get_attribute_name (const_tree);
+extern void apply_tm_attr (tree, tree);
+
+#endif // GCC_ATTRIBS_H
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 7dc980f9bf5368ca344d9aeb3edb24ff9eb0e861..e96245709c08d8c62dc43e5cca8eabc59848ac88 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -24,6 +24,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "machmode.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
+#include "tree-object-size.h"
 #include "realmpfr.h"
 #include "gimple.h"
 #include "flags.h"
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 89c975db1c55be0204cf63713b764b42c00c45a4..599c024c9b04e58e86db5d0260d2228446f00b0e 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -63,6 +63,29 @@
 	* c-gimplify.c: Likewise.
 	* cilk.c: Likewise.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-13  Joseph Myers  <joseph@codesourcery.com>
 
 	* c-common.h (enum rid): Add RID_AUTO_TYPE.
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 83d6253cbfd497fea4649a209b376402259f036a..b4bd63ba213b1afa4f68dadb3f7dc68ba559cb99 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -23,6 +23,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "intl.h"
 #include "tree.h"
+#include "fold-const.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "varasm.h"
+#include "trans-mem.h"
 #include "flags.h"
 #include "c-pragma.h"
 #include "ggc.h"
diff --git a/gcc/c-family/c-cppbuiltin.c b/gcc/c-family/c-cppbuiltin.c
index c5e895c58506de761c455b32cdfdfc785d6adc90..eb96b8338b05d5fdcd4a6d39f5d0d1f4eb17e477 100644
--- a/gcc/c-family/c-cppbuiltin.c
+++ b/gcc/c-family/c-cppbuiltin.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "version.h"
 #include "flags.h"
 #include "c-common.h"
diff --git a/gcc/c-family/c-format.c b/gcc/c-family/c-format.c
index b3e1e399353262c137471217170216728dd9e5e3..8f6c0db46ae1df55cd24e91bbbf46b7b05c85f29 100644
--- a/gcc/c-family/c-format.c
+++ b/gcc/c-family/c-format.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "flags.h"
 #include "c-common.h"
 #include "c-objc.h"
diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c
index 6484352f4c61bf6ddcfff137cc6fc4bb20a928c2..85fa42671a11187a87d32238645fb6edfba7b76a 100644
--- a/gcc/c-family/c-lex.c
+++ b/gcc/c-family/c-lex.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "input.h"
 #include "c-common.h"
 #include "flags.h"
diff --git a/gcc/c-family/c-pragma.c b/gcc/c-family/c-pragma.c
index 029ab1e33acebc55be6c550e056c9f65ed5bbbd8..70fb39ae9cfb34cdd64b4f016eb42a0aa78098b0 100644
--- a/gcc/c-family/c-pragma.c
+++ b/gcc/c-family/c-pragma.c
@@ -22,6 +22,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "varasm.h"
+#include "gcc-symtab.h"
 #include "function.h"		/* For cfun.  FIXME: Does the parser know
 				   when it is inside a function, so that
 				   we don't have to look at cfun?  */
diff --git a/gcc/c-family/c-pretty-print.c b/gcc/c-family/c-pretty-print.c
index 7898f13172c9c8eee4390adf627f6e465fde8cd3..af8a3fcdbe931759792ede14fd2246fcd8df57dd 100644
--- a/gcc/c-family/c-pretty-print.c
+++ b/gcc/c-family/c-pretty-print.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "attribs.h"
 #include "intl.h"
 #include "c-pretty-print.h"
 #include "tree-pretty-print.h"
diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c
index 165348f124cfacb7ed5b5026a8715995b39d6d52..894a35270c54c73dcb3db47746d38f2446a61f4b 100644
--- a/gcc/c-family/cilk.c
+++ b/gcc/c-family/cilk.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "calls.h"
 #include "langhooks.h"
 #include "gimple.h"
 #include "gimplify.h"
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index e8a5365592d2f0893efff6a8f2cfb4fe4f74c3c6..92dbcee48094d601d95877a846c304a2c06417bf 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -39,6 +39,24 @@
 
 	* c-typeck.c: Include only gimplify.h and gimple.h as needed.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-13  Joseph Myers  <joseph@codesourcery.com>
 
 	* c-tree.h (c_typespec_keyword): Add cts_auto_type.
diff --git a/gcc/c/c-decl.c b/gcc/c/c-decl.c
index 10933e80d1a13463ddc1fe63c4d4b157287d7444..4125bd94103632d4b7491328051626184e9b53b0 100644
--- a/gcc/c/c-decl.c
+++ b/gcc/c/c-decl.c
@@ -31,6 +31,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "intl.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "attribs.h"
+#include "stringpool.h"
 #include "tree-inline.h"
 #include "flags.h"
 #include "function.h"
diff --git a/gcc/c/c-lang.c b/gcc/c/c-lang.c
index 614c46d15ebd0db71b2e3ef0e1c3af76efdccacb..8b0dca601e9a7d369043df62a163b57fd2a474d1 100644
--- a/gcc/c/c-lang.c
+++ b/gcc/c/c-lang.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "fold-const.h"
 #include "c-tree.h"
 #include "c-family/c-common.h"
 #include "langhooks.h"
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 74eb13a3f7e0e15b9c64bc7afecfe6437ec1de78..ea3aa9a10438dcbf3e09b60d54921d8c2f1d85e2 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -40,6 +40,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"			/* For rtl.h: needs enum reg_class.  */
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "trans-mem.h"
 #include "langhooks.h"
 #include "input.h"
 #include "cpplib.h"
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index 42b6a6e312292cb69fedbeac31d0f4b0a667e68b..8e74b7b39188c6ffc4f31728c2f8384d403cbc5e 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -28,6 +28,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "trans-mem.h"
+#include "varasm.h"
+#include "stmt.h"
 #include "langhooks.h"
 #include "c-tree.h"
 #include "c-lang.h"
diff --git a/gcc/calls.c b/gcc/calls.c
index 4dcdb27c1c156bbb20cdd7c718fb66babe6e12e3..726ba23c3fc1fe1d75c31d4f9c2cecfc2ba53e94 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -23,6 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "stringpool.h"
+#include "attribs.h"
 #include "gimple.h"
 #include "flags.h"
 #include "expr.h"
diff --git a/gcc/calls.h b/gcc/calls.h
new file mode 100644
index 0000000000000000000000000000000000000000..8e7273829050a1fd514d90cb41bc02064933402e
--- /dev/null
+++ b/gcc/calls.h
@@ -0,0 +1,31 @@
+/* Declarations anda data types for RTL call insn generation.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_CALLS_H
+#define GCC_CALLS_H
+
+extern int flags_from_decl_or_type (const_tree);
+extern int call_expr_flags (const_tree);
+extern int setjmp_call_p (const_tree);
+extern bool gimple_alloca_call_p (const_gimple);
+extern bool alloca_call_p (const_tree);
+extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree);
+extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree);
+
+#endif // GCC_CALLS_H
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 85732c8f0d7596966c284165dc5b2d1ed07b5f56..4ff1a8954281b401c74ea0e37b8470ccc6533d9f 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -24,6 +24,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "hard-reg-set.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stmt.h"
+#include "print-tree.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "function.h"
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 996f1b660900ad47f6a65ce670522b6311e531c8..624d492cb75f43489ae77e11ac2502496b153248 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -28,6 +28,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "calls.h"
+#include "print-tree.h"
 #include "tree-inline.h"
 #include "langhooks.h"
 #include "hashtab.h"
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index f81b7b533ff86eee635e617abf5decafa5f782eb..651f34e6fc22155d4b4a9056fe89e9b175db9a33 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -852,6 +852,8 @@ void symtab_initialize_asm_name_hash (void);
 void symtab_prevail_in_asm_name_hash (symtab_node *node);
 void varpool_remove_initializer (struct varpool_node *);
 
+/* In cgraph.c */
+extern void change_decl_assembler_name (tree, tree);
 
 /* Return callgraph node for given symbol and check it is a function. */
 static inline struct cgraph_node *
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 28e40639e32d10f2d08deb8d1bf5eee7898eb4f2..795a321ae5701a5ea6ab7be3bf97b92909692107 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -68,9 +68,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "function.h"
+#include "emit-rtl.h"
 #include "gimple.h"
-#include "rtl.h"
 #include "bitmap.h"
 #include "tree-cfg.h"
 #include "tree-inline.h"
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index ce52115b99cd7734dc53f779d605704164266b03..2fcd313b8532b8d556b0274a20970427928c5717 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -162,6 +162,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "output.h"
 #include "rtl.h"
 #include "gimple.h"
diff --git a/gcc/cilk-common.c b/gcc/cilk-common.c
index 98b85988764eb7a2dc6d9389a6040ddc60343a65..bdea617a2e872780e8c70345b3866eb8abf9cf63 100644
--- a/gcc/cilk-common.c
+++ b/gcc/cilk-common.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "langhooks.h"
 #include "expr.h"
 #include "optabs.h"
diff --git a/gcc/combine.c b/gcc/combine.c
index 13f5e29e3d616c5a601ca24574631c87be83bc9d..fb5c8814edb8ccb757f07901bdb72436d61132b5 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -81,6 +81,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "regs.h"
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index 2f1a8d03cb16ab50c045868bb6530524fdcbb27e..2dc7838003b24d48f8b5d500d29ef34930b74e6f 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -24,6 +24,9 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "calls.h"
 #include "expr.h"
 #include "tm_p.h"
 #include "recog.h"
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index edd378ce69d8df32d3b10356d8679b5080bea6e5..f9da7c4243403c5cc031c58d25ae8eb4b3e9a20b 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -26,6 +26,10 @@
 #include "rtl.h"
 #include "insn-attr.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "regs.h"
 #include "df.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index e710b0c3717221c17ee0a6bd35f439585837a0a1..a5171ea0def92a6783ee4fc32c44bc98c9abcb50 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -25,6 +25,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
@@ -51,6 +54,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimplify.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-stdarg.h"
 #include "tm-constrs.h"
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index f813c90763df3ea4c44e3c7196fc6d117733e3d3..77932ce567c6d0acaae0ab3157c388120c4ab2ad 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index a5bd01006b6c9435d4afdab7abf34b17af83ff27..2d5f8671b14356127fb774d40698d0f2de74c398 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -27,6 +27,10 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "obstack.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/avr/avr-c.c b/gcc/config/avr/avr-c.c
index 4e64405a3516063b49d2bc8ebbd59905e52e1739..2cfb264ad2049fd49e555d2b169c9ab21894ee45 100644
--- a/gcc/config/avr/avr-c.c
+++ b/gcc/config/avr/avr-c.c
@@ -26,6 +26,7 @@
 #include "tm_p.h"
 #include "cpplib.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "target.h"
 #include "c-family/c-common.h"
 #include "langhooks.h"
diff --git a/gcc/config/avr/avr-log.c b/gcc/config/avr/avr-log.c
index 87fa14d70064694d770c4785d6b77f7964324136..3d2f54d9707a1fbc790eb4150c2b4dd9f6f7de85 100644
--- a/gcc/config/avr/avr-log.c
+++ b/gcc/config/avr/avr-log.c
@@ -24,6 +24,7 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "print-tree.h"
 #include "output.h"
 #include "input.h"
 #include "function.h"
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index e7e1c2f138bd1b57a23521027b62de18cf87a960..8d98c811d9b75edd3d1a6eed2644c581da803a7b 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -32,6 +32,10 @@
 #include "flags.h"
 #include "reload.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "calls.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "output.h"
 #include "expr.h"
 #include "c-family/c-common.h"
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index bd677f88bab76529b0e5267bd5c98e896db49765..0d473cbafbcc901a0a2d8d9953dbb897534f8f31 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -32,6 +32,8 @@
 #include "output.h"
 #include "insn-attr.h"
 #include "tree.h"
+#include "varasm.h"
+#include "calls.h"
 #include "flags.h"
 #include "except.h"
 #include "function.h"
diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
index a37e02ff8341c79fb592e08d43df0c00f9b09412..af310bac8dc59e4b10562a58c11c84b9deac2a56 100644
--- a/gcc/config/c6x/c6x.c
+++ b/gcc/config/c6x/c6x.c
@@ -25,6 +25,10 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
+#include "stringpool.h"
 #include "insn-flags.h"
 #include "output.h"
 #include "insn-attr.h"
diff --git a/gcc/config/cr16/cr16.c b/gcc/config/cr16/cr16.c
index 1ac29cc800aa2a19a839cd8200457c104c114eaa..b3972766d5bfa157cc440bdb67de6cddaccc94d0 100644
--- a/gcc/config/cr16/cr16.c
+++ b/gcc/config/cr16/cr16.c
@@ -24,6 +24,8 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "tm_p.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 7432251b9505fadf5ae8efe5d4f68f5762a90a6d..2d2a108031d769705cf9f1a0cd40d296a39accbd 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -30,6 +30,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr.h"
 #include "flags.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "stmt.h"
 #include "expr.h"
 #include "except.h"
 #include "function.h"
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 63efe49475d311ba9c71eaa4435aa31f7aa72d10..761576df5657c42f28eb445ea87b35dd414ff983 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -32,6 +32,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr.h"
 #include "flags.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "expr.h"
 #include "reload.h"
 #include "function.h"
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index 3a09efa0a1c2f1f53dfeca23b3437e5038ba6c19..88459e2d4adf3855f5c429f3d2c841f92e1cad54 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -23,6 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
+#include "stringpool.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/fr30/fr30.c b/gcc/config/fr30/fr30.c
index 4a45feafd04760a046d3cf6d1ef752794679eed2..caa50d9e691ab893f174f1588c6ece95f4f9201d 100644
--- a/gcc/config/fr30/fr30.c
+++ b/gcc/config/fr30/fr30.c
@@ -33,6 +33,8 @@
 #include "flags.h"
 #include "recog.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "output.h"
 #include "expr.h"
 #include "obstack.h"
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index bcd55111434acb69ff45cd813b207d140583ea50..6e74fe48eaac49a43dffcf9d5bbc82dee77200ae 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -23,6 +23,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 69f37fd02d6b0e06759c5dac0e80d54b41fc081d..f0ebca30f2c7a21c36138ddcc873d88eb8138c6b 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -25,6 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
+#include "stringpool.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d95ca351906161fd75a9d5ccd4d1fbfe7bdce00f..7ae9f57aeee3ff407fe849dd9c2a288d81d22222 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -23,6 +23,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "calls.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "tm_p.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/i386/winnt-cxx.c b/gcc/config/i386/winnt-cxx.c
index 92de46abd59ab2dd5c143be9b012593e3722cb58..d466299abedbd012d62c5df7fac387d8291a6116 100644
--- a/gcc/config/i386/winnt-cxx.c
+++ b/gcc/config/i386/winnt-cxx.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
 #include "cp/cp-tree.h" /* This is why we're a separate module.  */
 #include "flags.h"
 #include "tm_p.h"
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 94155d89a7fd6a94e3793f5604992bfd93fe39a3..2c1677eec883ac1a683358955c05682cbf1cb50f 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -27,6 +27,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "hard-reg-set.h"
 #include "output.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "diagnostic-core.h"
diff --git a/gcc/config/ia64/ia64-c.c b/gcc/config/ia64/ia64-c.c
index 4d4dbc843698446a3dfd626e00adda5c1e0a2110..6489668b7d99d0bdad4dc9f6dd865de7705570cb 100644
--- a/gcc/config/ia64/ia64-c.c
+++ b/gcc/config/ia64/ia64-c.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cpplib.h"
 #include "c-family/c-common.h"
 #include "c-family/c-pragma.h"
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 4fde7aab43e50df84ebf0b1be66115bbdcb5e864..307681c995d17e1764b18d12a67c2f0869b49a40 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -25,6 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/iq2000/iq2000.c b/gcc/config/iq2000/iq2000.c
index e65d0ccdc030e3322fbc9abbbdbdce49a0c46764..e6d1171ca858a3e2f316faefcde3aed06ec869f3 100644
--- a/gcc/config/iq2000/iq2000.c
+++ b/gcc/config/iq2000/iq2000.c
@@ -22,6 +22,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/lm32/lm32.c b/gcc/config/lm32/lm32.c
index 6483a03e57dc4fec51b167e4ed0f4add98d832af..6bddc488727a2305743a270cd75c435c17cf0292 100644
--- a/gcc/config/lm32/lm32.c
+++ b/gcc/config/lm32/lm32.c
@@ -35,6 +35,7 @@
 #include "recog.h"
 #include "output.h"
 #include "tree.h"
+#include "calls.h"
 #include "expr.h"
 #include "flags.h"
 #include "reload.h"
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index deac40c228f82f3e94dbd73ac755b8d0b3df64d8..ec30b8d7f9ba1c2fb7c4b2f205a488f97dbed7c3 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -36,6 +36,9 @@
 #include "diagnostic-core.h"
 #include "obstack.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c
index c94da538fcfb15b3f92e4809d328a9e30fa6d9a9..6cee5d728b35e33ad7e0f36afdc29d707e550bc8 100644
--- a/gcc/config/m32r/m32r.c
+++ b/gcc/config/m32r/m32r.c
@@ -22,6 +22,10 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "stringpool.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 7035504bfe3c03112f7c9b82f83ac3a05ac899f2..db1554deb3656ee6cfcc4673497f10b73769ffd7 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -22,6 +22,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "calls.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "function.h"
 #include "regs.h"
diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c
index 6550b6905f0a7a5b9f47616757ac104664f744e1..6bd60702fa244591c031358e9b85d69caf19515f 100644
--- a/gcc/config/mcore/mcore.c
+++ b/gcc/config/mcore/mcore.c
@@ -23,6 +23,10 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "stringpool.h"
+#include "calls.h"
 #include "tm_p.h"
 #include "mcore.h"
 #include "regs.h"
diff --git a/gcc/config/mep/mep.c b/gcc/config/mep/mep.c
index 489bef9c2d3dcf4bfdce4b72efe39e7499412c42..6ce6c530077a911ca76c5251d92870dd3e96ae82 100644
--- a/gcc/config/mep/mep.c
+++ b/gcc/config/mep/mep.c
@@ -24,6 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
+#include "calls.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
index 3258a95ef3a191a5f9e5f793205863033b13eeb3..93dede4d189d2723cf3c0dfeba320f3feef5e798 100644
--- a/gcc/config/microblaze/microblaze.c
+++ b/gcc/config/microblaze/microblaze.c
@@ -33,6 +33,9 @@
 #include "insn-attr.h"
 #include "recog.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "function.h"
 #include "expr.h"
 #include "flags.h"
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 80bbb00c2c8465c5bc0cd11a0812ebbda0168765..00c6e0c90ae06f88ee42178d13edf21b6fa0ff61 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "recog.h"
 #include "output.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "function.h"
 #include "expr.h"
 #include "optabs.h"
diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c
index 34b4fea7503e549da48388aab3185e69bf93de9b..eb43af71d08e5dcc06620033630d0dbdc2f09f40 100644
--- a/gcc/config/mmix/mmix.c
+++ b/gcc/config/mmix/mmix.c
@@ -31,6 +31,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "basic-block.h"
 #include "flags.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "function.h"
 #include "expr.h"
 #include "diagnostic-core.h"
diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c
index df563d03eac73a582233a48ea9aa61dbae6df163..342c336f118b3daa02262cf28d5988ee27813e83 100644
--- a/gcc/config/mn10300/mn10300.c
+++ b/gcc/config/mn10300/mn10300.c
@@ -24,6 +24,9 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/moxie/moxie.c b/gcc/config/moxie/moxie.c
index d4f7d6d9d680d46ac3a706a7e30a7a3caa3d9d41..abba0aebd2d16a6ce3cce7a71bb403b06e46ec0a 100644
--- a/gcc/config/moxie/moxie.c
+++ b/gcc/config/moxie/moxie.c
@@ -36,6 +36,9 @@
 #include "diagnostic-core.h"
 #include "obstack.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/msp430/msp430.c b/gcc/config/msp430/msp430.c
index 1ebb583c1ed075b949e8641ec80b460ebadf1719..daff4ae1623e0f54400d7b00cb3586a045d1c341 100644
--- a/gcc/config/msp430/msp430.c
+++ b/gcc/config/msp430/msp430.c
@@ -23,6 +23,8 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/nds32/nds32.c b/gcc/config/nds32/nds32.c
index f039e2789c5fd3dc0ea9424a0a78c3003a2be4fc..4454bf2d0d40085a5041e599a58ced1bace4a4fe 100644
--- a/gcc/config/nds32/nds32.c
+++ b/gcc/config/nds32/nds32.c
@@ -25,6 +25,9 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 260830f00d7f08b488a708ec843db899fdf77a30..2aa63c6bd0c882d0690576847ed19d32039906cc 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -30,6 +30,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr.h"
 #include "flags.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "calls.h"
 #include "output.h"
 #include "dbxout.h"
 #include "except.h"
diff --git a/gcc/config/pdp11/pdp11.c b/gcc/config/pdp11/pdp11.c
index 0a310c50d79f12ace14c4098d952a033e9d32dc5..42237b5d798ca1c47658c78e60cbdbfdf051af31 100644
--- a/gcc/config/pdp11/pdp11.c
+++ b/gcc/config/pdp11/pdp11.c
@@ -33,6 +33,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "recog.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "expr.h"
 #include "diagnostic-core.h"
 #include "tm_p.h"
diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c
index 641bccb81f61c6f4e0eb264df1f88a578e06b9cd..4756cb78b724a6f330ff56496a9f6ffee633f0c5 100644
--- a/gcc/config/picochip/picochip.c
+++ b/gcc/config/picochip/picochip.c
@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3.  If not, see
 #include "recog.h"
 #include "obstack.h"
 #include "tree.h"
+#include "calls.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/rl78/rl78.c b/gcc/config/rl78/rl78.c
index f071e31daf287b180188bedea616dcfbc978758c..72aefc205a1ef1606808e8c29bd664d46ea4269b 100644
--- a/gcc/config/rl78/rl78.c
+++ b/gcc/config/rl78/rl78.c
@@ -23,6 +23,9 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c
index 283cc917ae8b87c1f066b066055d437603fd650b..667e5a6de180b573a9e84f3e1032bcc278b2d045 100644
--- a/gcc/config/rs6000/rs6000-c.c
+++ b/gcc/config/rs6000/rs6000-c.c
@@ -26,6 +26,8 @@
 #include "tm.h"
 #include "cpplib.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "c-family/c-common.h"
 #include "c-family/c-pragma.h"
 #include "diagnostic-core.h"
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index bfa061c8c6e4029a25a56ed2c2fb5f3510a33860..fa79a02a936bd5f973d2f3040ef1dd298d3686a5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -32,6 +32,11 @@
 #include "recog.h"
 #include "obstack.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "print-tree.h"
+#include "varasm.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 89860927a82ca50c8702c048546d5230460a7f3d..662ab9b72ccbea58c7426e7869cb9a1123e35e8a 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -27,6 +27,9 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 8519cd0452d4d8c45b9e148d91be17c21fc2e7c7..cae4a329f4e6fda3755dfe12243ad0ef56c2b00b 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -26,6 +26,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "tm_p.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/score/score.c b/gcc/config/score/score.c
index c25aaa2da93fbf650da67b420911a3d9101fd246..3fdf2ea9050108c6e08c8b41f9d996d5ce9ef354 100644
--- a/gcc/config/score/score.c
+++ b/gcc/config/score/score.c
@@ -32,6 +32,10 @@
 #include "diagnostic-core.h"
 #include "output.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "calls.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "function.h"
 #include "expr.h"
 #include "optabs.h"
diff --git a/gcc/config/sh/sh-c.c b/gcc/config/sh/sh-c.c
index 4f3a41a46e74ea63a5766bb50de90d64105ee2d7..22e291d2b76d5921128b467a8ab93b7c68b402c3 100644
--- a/gcc/config/sh/sh-c.c
+++ b/gcc/config/sh/sh-c.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h.h"
 #include "tm_p.h"
 #include "cpplib.h"
 #include "c-family/c-common.h"
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 088ef39631350d6c883a9cab2042365197590bdc..d5f7f15c1cc4b908ae71b81f0c29053170159399 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -26,6 +26,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-config.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "flags.h"
 #include "expr.h"
 #include "optabs.h"
diff --git a/gcc/config/sol2-c.c b/gcc/config/sol2-c.c
index ee44621591e7ac2c42eb3651c390a7c0b3fab781..8254af0fd7395b4a2d185e40413bb24c7b64a2cc 100644
--- a/gcc/config/sol2-c.c
+++ b/gcc/config/sol2-c.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
 #include "tm.h"
 #include "tm_p.h"
 
diff --git a/gcc/config/sol2-cxx.c b/gcc/config/sol2-cxx.c
index e1b450d759b8df5843b30558b978700e05e18749..d3d79554b96ba5411b1fd655da1d76827a8cbad1 100644
--- a/gcc/config/sol2-cxx.c
+++ b/gcc/config/sol2-cxx.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cp/cp-tree.h"
 #include "tm.h"
 #include "tm_p.h"
diff --git a/gcc/config/sol2.c b/gcc/config/sol2.c
index 7c7c429db3d67973972634d87cd9a4d24f01a780..4200e620e165b90d2468610858d51c15c732128d 100644
--- a/gcc/config/sol2.c
+++ b/gcc/config/sol2.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "output.h"
 #include "tm.h"
 #include "rtl.h"
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 1d6aa942ef6854e60bf91056b3a762933c3d5a73..cabf8f0d244ddf88ae8f7125652357adbb61c969 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -25,6 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/spu/spu-c.c b/gcc/config/spu/spu-c.c
index 215962fa7c9d10c6fe57b53d1861378b22f664b9..7632ec1462cd206796c161850e70379792dd43ec 100644
--- a/gcc/config/spu/spu-c.c
+++ b/gcc/config/spu/spu-c.c
@@ -20,6 +20,7 @@
 #include "tm.h"
 #include "cpplib.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "c-family/c-common.h"
 #include "c-family/c-pragma.h"
 #include "tm_p.h"
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index 55b934b6a5b67f4f0512746431565cde0cb92e5e..315f1b3617fdf26536db55ac68f80b9d2d192e8f 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -28,6 +28,10 @@
 #include "recog.h"
 #include "obstack.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index 3a08534be517023c34014e55a4c143d3fc1f6515..d5a1fc6ad860d5ae6cd536e152576c23ccac9db3 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -35,6 +35,10 @@
 #include "diagnostic-core.h"
 #include "obstack.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "expr.h"
 #include "optabs.h"
 #include "except.h"
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index bf13d11b8201769b68258c98881fab216955b762..809beefa3055a579f24e11d14c2a8aef7259b75e 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -41,6 +41,10 @@
 #include "timevar.h"
 #include "tree.h"
 #include "gimple.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "gimplify.h"
 #include "cfgloop.h"
 #include "tilegx-builtins.h"
diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c
index d497f64125f55cbf3685fbefb1684f1a0427d029..9fe1b104f57151ed02f6b3ff4afdb94e801857d3 100644
--- a/gcc/config/tilepro/tilepro.c
+++ b/gcc/config/tilepro/tilepro.c
@@ -42,6 +42,10 @@
 #include "timevar.h"
 #include "tree.h"
 #include "gimple.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "gimplify.h"
 #include "cfgloop.h"
 #include "tilepro-builtins.h"
diff --git a/gcc/config/v850/v850-c.c b/gcc/config/v850/v850-c.c
index 63ef368afc443e3b9ec11448d2721ac5769a734a..25158d50e09e5cdc10abfdfc943cb77895813504 100644
--- a/gcc/config/v850/v850-c.c
+++ b/gcc/config/v850/v850-c.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "cpplib.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
 #include "c-family/c-pragma.h"
 #include "diagnostic-core.h"
 #include "ggc.h"
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index 006cff4bcdfbd776b875eff524b80512c691e1c7..32fe73b1fa628c588174c7263637e6ea4e4ec3fe 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -23,6 +23,10 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "calls.h"
 #include "rtl.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/config/vax/vax.c b/gcc/config/vax/vax.c
index 6b643d1af5de720f0ba4b538c0639fb3c06380d0..7aac7cb0554a49dd1db54a1324bb231eb326e7f9 100644
--- a/gcc/config/vax/vax.c
+++ b/gcc/config/vax/vax.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "df.h"
 #include "tree.h"
+#include "calls.h"
+#include "varasm.h"
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "insn-config.h"
diff --git a/gcc/config/vms/vms.c b/gcc/config/vms/vms.c
index ba1e2a69798435ec9779a2ecde1e51e1e1376de5..3047cfde9fed20bb259e2ea818b1548ad6d28f87 100644
--- a/gcc/config/vms/vms.c
+++ b/gcc/config/vms/vms.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "vms-protos.h"
 #include "ggc.h"
 #include "target.h"
diff --git a/gcc/config/vxworks.c b/gcc/config/vxworks.c
index 2900d9785eaf0c37aba1b1a32fa35676a46886fa..2940ea1193395d9a5c66dd6191b52cc4567794c7 100644
--- a/gcc/config/vxworks.c
+++ b/gcc/config/vxworks.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "output.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 
 /* Like default_named_section_asm_out_constructor, except that even
    constructors with DEFAULT_INIT_PRIORITY must go in a numbered
diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
index 6385c5df555174bfad4195ff3a298467346c1ed5..9e6bb23818f8a905cd711f991ed0b23a359bb20e 100644
--- a/gcc/config/xtensa/xtensa.c
+++ b/gcc/config/xtensa/xtensa.c
@@ -34,6 +34,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "recog.h"
 #include "output.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "varasm.h"
 #include "expr.h"
 #include "flags.h"
 #include "reload.h"
diff --git a/gcc/convert.c b/gcc/convert.c
index a2f2a334dbf85ed0335f834c76ae1990ac3df740..4cf500197ae68d2b16394f20e8f6b8f113b703a3 100644
--- a/gcc/convert.c
+++ b/gcc/convert.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "convert.h"
 #include "diagnostic-core.h"
diff --git a/gcc/coverage.c b/gcc/coverage.c
index 3f4e334f078d20c9cb2a52e8c8d853291b297a89..f2ac5fcaa46cc080c8f03986eda1924a3e1de7b1 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -30,6 +30,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "output.h"
 #include "regs.h"
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2906ed7a63ac9bc1e8743081e6e55a00ed8c0d93..1c0d9b7c12116cce46db7e09cf961a7c3f532d73 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -83,6 +83,68 @@
 	* tree.c: Likewise.
 	* vtable-class-hierarchy.c: Likewise.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-12  Andrew MacLeod <amacleod@redhat.com>
 
 	* class.c: Include gimplify.h.
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index fd7b1cc78d451bba2b12bf037fb30ec704af5a22..c529c16bc7495c4d7986d4b4c2b359f5e7289526 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -27,6 +27,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "trans-mem.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "toplev.h"
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 39ff6a54fb0f20381a7ab4eea4f74e959d97308c..00fec27a3d55df9d0e9cb7193b8d5348379fc11e 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -26,6 +26,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "attribs.h"
+#include "gimple.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "toplev.h"
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index c464719ad4235a894174b6ff74684aa3e397d25e..e2629464dd9a1c6ca1ab7e146d2daf8f5840c169 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "cp-tree.h"
 #include "c-family/c-common.h"
 #include "tree-iterator.h"
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 7dac108db95bd9e8bbdb7b36b7e7fd2b1c2bc94c..5264c5df2a810f1b69731bceb47fb1ea22411286 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "cp-tree.h"
 #include "intl.h"
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index e2aad9d54b35d4ce28fe493db78136d6df685b48..500c81f79fc48f131efbe42c2f4052d1bdf386c8 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -31,6 +31,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "attribs.h"
+#include "calls.h"
 #include "flags.h"
 #include "cp-tree.h"
 #include "tree-iterator.h"
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 18456848492ce859bb353e64c81cca07fa1d5d55..93c75cbf4d66cd7d08ff38f0b1ac11e64588133f 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -31,6 +31,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "attribs.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "gimple.h"
 #include "flags.h"
 #include "cp-tree.h"
 #include "decl.h"
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 0ad9f0722db1d0c8f61d14fcb7dfe3e3d2229d45..5481523868df43a3107255ed0d9613cc55dc8e74 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "diagnostic.h"
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index ac2128d13b0711752ff347ce1983d7d71832fcbf..d7d009bdd6925753bfb7d0699f08ffe8b79637a1 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -26,6 +26,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "trans-mem.h"
+#include "attribs.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "tree-inline.h"
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index 7eac6f52d095cf3ba4b968e7cc2c55836614d701..fd43a4fc87c963d4b63644420afd22e99ce2c728 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -25,6 +25,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "target.h"
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index f39ce1a5ea69b8db51b65ccf1ab869853463257e..24aa2c55cc0f3a8224932be8e282e44bda28b242 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cgraph.h"
 #include "tree-iterator.h"
 #include "cp-tree.h"
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index d6ed809d61d04d03d644e4cecf791085b22ad11b..5d8a313f38b4ed259befcff8a900281e36fd675c 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "input.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "cpplib.h"
 #include "flags.h"
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 202fafceb03b9483680ba5e7c2655ae0440df780..8a24d6c8cfd93defe7ea8e3a58c087be7f0c075f 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -49,6 +49,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "tm_p.h"
 #include "cp-tree.h"
 #include "obstack.h"
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index d15d0a4d6f6d35f0d70a0a5a3ace325d9208a41e..740536573cb64a36be8476c5d37fc16c061e0cf0 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -26,6 +26,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "toplev.h"
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index ced596e310a4ef3f041a26b3289d6f3c0ea8383c..d0c024a120ffbf42e2b3cebb48eb987ecad4fdcc 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -24,6 +24,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "flags.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "print-tree.h"
+#include "attribs.h"
 #include "cp-tree.h"
 #include "name-lookup.h"
 #include "timevar.h"
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index c4ee8484bb95ab7197c0e6c69b59300e7e2e24c3..b8df1347c3393788f0c221ef1a2136f4033e5be4 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "input.h"
 #include "params.h"
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index d37924851ed92fdec93e29eb7f81403aa5c53ee5..977adf6b79163ab21db608ce521a129fad56eddd 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -25,6 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "timevar.h"
 #include "cpplib.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "stringpool.h"
+#include "attribs.h"
+#include "trans-mem.h"
 #include "cp-tree.h"
 #include "intl.h"
 #include "c-family/c-pragma.h"
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 3bc8ccb0ee32da54f05b55eed74a3e9aaab01dd2..bbf8f550f3ed1119050184d8f36585c52c101c1f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -29,6 +29,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "attribs.h"
+#include "stor-layout.h"
 #include "intl.h"
 #include "pointer-set.h"
 #include "flags.h"
diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c
index f4ca003be983f3fb5dd4ee930dd6aad3fc6d200d..3c37a2aed3ea9f79a3cff17d159dfcab884b0171 100644
--- a/gcc/cp/ptree.c
+++ b/gcc/cp/ptree.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "print-tree.h"
 #include "cp-tree.h"
 
 void
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c
index 7b6f7b8ce1bd557e0bd7a6a6329096e918765c1c..47b9198658245301388ceb143c4481a35f7d4f69 100644
--- a/gcc/cp/repo.c
+++ b/gcc/cp/repo.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "input.h"
 #include "obstack.h"
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index 5827540c9b273c4c1a994b441943662c9b9aaf31..0bac87909a081c5efdcfe421e664cbe351767d26 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "convert.h"
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index dce2b3749fccd2dc8e5dff8f9d76fd972ec1391e..11f781288e90f47aa5791c110c848303093bc71b 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -28,6 +28,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stmt.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "cp-tree.h"
 #include "c-family/c-common.h"
 #include "c-family/c-objc.h"
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index d7af1d3a5510be4e1638efd1068450cadefd01e0..a990a79bbb3667c40bc24e25e78c1586ff0bffca 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -23,6 +23,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "print-tree.h"
+#include "tree-iterator.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "tree-inline.h"
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index bff7f17780f9f19b4513683d44e58ad954d5c593..c9ddbe9ba242d8e6dccc4a435e58a47af4fa5094 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -29,6 +29,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "gimple.h"
 #include "cp-tree.h"
 #include "flags.h"
 #include "diagnostic.h"
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 5c4fdfa0162ed12d086d9c29cee93f64b27e06dc..0f3b01d9bc23fd75c0d9be2eb091e90bf7730d84 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -30,6 +30,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "intl.h"
 #include "cp-tree.h"
 #include "flags.h"
diff --git a/gcc/cp/vtable-class-hierarchy.c b/gcc/cp/vtable-class-hierarchy.c
index 5e78ec9d3a75e16c0cb87d5b12215b00bc7b7159..32f9541e43da2a66e586414b08fe01aa54cb6dda 100644
--- a/gcc/cp/vtable-class-hierarchy.c
+++ b/gcc/cp/vtable-class-hierarchy.c
@@ -120,6 +120,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "vtable-verify.h"
 #include "gimple.h"
 #include "gimplify.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 
 static int num_calls_to_regset = 0;
 static int num_calls_to_regpair = 0;
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 2e03c124ee86d43496e64dfe4c7bdab8c358e6e0..88596a8d49c22ed353134edd150b1bdd475cb1d9 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -72,6 +72,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "rtl.h"
 #include "flags.h"
 #include "regs.h"
diff --git a/gcc/dojump.c b/gcc/dojump.c
index ee12d761eee0833148f07b95d31656fee3ef6e92..2aef34d307a572488700c31dcb0884f4404d2a94 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "function.h"
 #include "insn-config.h"
diff --git a/gcc/dse.c b/gcc/dse.c
index b602caa291ff7823663979ae9f6ad3faf07b2d15..9662da845ba63a2950fef11ff016698c6dea9c83 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c
index 69907f9fbf28fbf01319c9692c0110cf45214036..fc1b0825205642be6332053109a0d0850bc1f739 100644
--- a/gcc/dwarf2asm.c
+++ b/gcc/dwarf2asm.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "flags.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "output.h"
 #include "target.h"
diff --git a/gcc/dwarf2cfi.c b/gcc/dwarf2cfi.c
index e0f85edc61bb6d2114f3df75ea7eab80a644f5ef..19276e23a2073b47e779442e1dda381ff3da357f 100644
--- a/gcc/dwarf2cfi.c
+++ b/gcc/dwarf2cfi.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "function.h"
 #include "basic-block.h"
 #include "dwarf2.h"
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 0095507ee1a6442b7502d38e9ccbc9bdc4afc80d..8186b528872fcd87fab5968b134d76b19d274991 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -59,10 +59,16 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "function.h"
+#include "emit-rtl.h"
+#include "gimple.h"
 #include "version.h"
 #include "flags.h"
-#include "rtl.h"
 #include "hard-reg-set.h"
 #include "regs.h"
 #include "insn-config.h"
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index af228d94bd4b6c7c73ad7f0962d5561622d55ed3..24e3c92151b85bbf2443c46c5a1d9aa95d0546e3 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -38,9 +38,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
+#include "gimple.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "function.h"
+#include "stringpool.h"
 #include "expr.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h
index 726809097e781765061b264f6ae5af2699844174..301c67b354549a6cb02ac10cd6f21d8742981883 100644
--- a/gcc/emit-rtl.h
+++ b/gcc/emit-rtl.h
@@ -113,4 +113,7 @@ get_max_uid (void)
 {
   return crtl->emit.x_cur_insn_uid;
 }
+
+extern void set_decl_incoming_rtl (tree, rtx, bool);
+
 #endif /* GCC_EMIT_RTL_H */
diff --git a/gcc/except.c b/gcc/except.c
index 6043ef293e636708315d861c84176ea4d9a6c44b..f8296b223bc2198a8d92243ac2cba2254af5d642 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -115,6 +115,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "function.h"
 #include "expr.h"
diff --git a/gcc/explow.c b/gcc/explow.c
index 3a78a6513607100ff9d7dfe223e7a01924b095e8..bc4f805323c3b5d8c0bb84db4e5f4f455f79a903 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "except.h"
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 1617bc05aa10deba5ac4531e2c4e17c05a9ad21e..c5123cbbe81c21136ddd38737dd3c659369d80c4 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "insn-config.h"
diff --git a/gcc/expr.c b/gcc/expr.c
index ece5d0fc4431f6515dae6cd2ca7611ce87a4886b..53e85e503ee5b1c999702dd587f641c0b0425f0c 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -24,6 +24,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "machmode.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "attribs.h"
+#include "varasm.h"
 #include "flags.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/expr.h b/gcc/expr.h
index 422c75d3f592e55d356e16853e1fac03c7ad1049..a2cd6690bfe73197af379b68692de26894802b76 100644
--- a/gcc/expr.h
+++ b/gcc/expr.h
@@ -748,4 +748,23 @@ extern void expand_case (gimple);
 /* Like expand_case but special-case for SJLJ exception dispatching.  */
 extern void expand_sjlj_dispatch_table (rtx, vec<tree> );
 
+/* Determine whether the LEN bytes can be moved by using several move
+   instructions.  Return nonzero if a call to move_by_pieces should
+   succeed.  */
+extern int can_move_by_pieces (unsigned HOST_WIDE_INT, unsigned int);
+
+extern unsigned HOST_WIDE_INT highest_pow2_factor (const_tree);
+bool array_at_struct_end_p (tree);
+
+/* Return a tree of sizetype representing the size, in bytes, of the element
+   of EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+extern tree array_ref_element_size (tree);
+
+extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *,
+				      HOST_WIDE_INT *, bool *);
+
+/* Return a tree representing the offset, in bytes, of the field referenced
+   by EXP.  This does not include any offset in DECL_FIELD_BIT_OFFSET.  */
+extern tree component_ref_field_offset (tree);
+
 #endif /* GCC_EXPR_H */
diff --git a/gcc/final.c b/gcc/final.c
index 1a6320f5195f373a274f03c0cb4e8a9c7087c173..2d206f1311a7d9de208214a0111b8afcc7af4048 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 
 #include "tree.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "tm_p.h"
 #include "regs.h"
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 5a010234af536b4189749f29f30d77b3345eda65..fc18de56565b4b801712b227f93c2f8806ab08e5 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -46,6 +46,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "flags.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "tree-iterator.h"
 #include "realmpfr.h"
 #include "rtl.h"
 #include "expr.h"
diff --git a/gcc/fold-const.h b/gcc/fold-const.h
new file mode 100644
index 0000000000000000000000000000000000000000..1d45836695199d4e65e94236b7e9f9de5c5eee3b
--- /dev/null
+++ b/gcc/fold-const.h
@@ -0,0 +1,172 @@
+/* Fold a constant sub-tree into a single node for C-compiler
+   Copyright (C) 1987-2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_FOLD_CONST_H
+#define GCC_FOLD_CONST_H
+
+/* Non-zero if we are folding constants inside an initializer; zero
+   otherwise.  */
+extern int folding_initializer;
+
+/* Convert between trees and native memory representation.  */
+extern int native_encode_expr (const_tree, unsigned char *, int);
+extern tree native_interpret_expr (tree, const unsigned char *, int);
+
+/* Fold constants as much as possible in an expression.
+   Returns the simplified expression.
+   Acts only on the top level of the expression;
+   if the argument itself cannot be simplified, its
+   subexpressions are not changed.  */
+
+extern tree fold (tree);
+#define fold_unary(CODE,T1,T2)\
+   fold_unary_loc (UNKNOWN_LOCATION, CODE, T1, T2)
+extern tree fold_unary_loc (location_t, enum tree_code, tree, tree);
+#define fold_unary_ignore_overflow(CODE,T1,T2)\
+   fold_unary_ignore_overflow_loc (UNKNOWN_LOCATION, CODE, T1, T2)
+extern tree fold_unary_ignore_overflow_loc (location_t, enum tree_code, tree, tree);
+#define fold_binary(CODE,T1,T2,T3)\
+   fold_binary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3)
+extern tree fold_binary_loc (location_t, enum tree_code, tree, tree, tree);
+#define fold_ternary(CODE,T1,T2,T3,T4)\
+   fold_ternary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3, T4)
+extern tree fold_ternary_loc (location_t, enum tree_code, tree, tree, tree, tree);
+#define fold_build1(c,t1,t2)\
+   fold_build1_stat_loc (UNKNOWN_LOCATION, c, t1, t2 MEM_STAT_INFO)
+#define fold_build1_loc(l,c,t1,t2)\
+   fold_build1_stat_loc (l, c, t1, t2 MEM_STAT_INFO)
+extern tree fold_build1_stat_loc (location_t, enum tree_code, tree,
+				  tree MEM_STAT_DECL);
+#define fold_build2(c,t1,t2,t3)\
+   fold_build2_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3 MEM_STAT_INFO)
+#define fold_build2_loc(l,c,t1,t2,t3)\
+   fold_build2_stat_loc (l, c, t1, t2, t3 MEM_STAT_INFO)
+extern tree fold_build2_stat_loc (location_t, enum tree_code, tree, tree,
+				  tree MEM_STAT_DECL);
+#define fold_build3(c,t1,t2,t3,t4)\
+   fold_build3_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3, t4 MEM_STAT_INFO)
+#define fold_build3_loc(l,c,t1,t2,t3,t4)\
+   fold_build3_stat_loc (l, c, t1, t2, t3, t4 MEM_STAT_INFO)
+extern tree fold_build3_stat_loc (location_t, enum tree_code, tree, tree, tree,
+				  tree MEM_STAT_DECL);
+extern tree fold_build1_initializer_loc (location_t, enum tree_code, tree, tree);
+extern tree fold_build2_initializer_loc (location_t, enum tree_code, tree, tree, tree);
+#define fold_build_call_array(T1,T2,N,T4)\
+   fold_build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
+extern tree fold_build_call_array_loc (location_t, tree, tree, int, tree *);
+#define fold_build_call_array_initializer(T1,T2,N,T4)\
+   fold_build_call_array_initializer_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
+extern tree fold_build_call_array_initializer_loc (location_t, tree, tree, int, tree *);
+extern bool fold_convertible_p (const_tree, const_tree);
+#define fold_convert(T1,T2)\
+   fold_convert_loc (UNKNOWN_LOCATION, T1, T2)
+extern tree fold_convert_loc (location_t, tree, tree);
+extern tree fold_single_bit_test (location_t, enum tree_code, tree, tree, tree);
+extern tree fold_ignored_result (tree);
+extern tree fold_abs_const (tree, tree);
+extern tree fold_indirect_ref_1 (location_t, tree, tree);
+extern void fold_defer_overflow_warnings (void);
+extern void fold_undefer_overflow_warnings (bool, const_gimple, int);
+extern void fold_undefer_and_ignore_overflow_warnings (void);
+extern bool fold_deferring_overflow_warnings_p (void);
+extern tree fold_fma (location_t, tree, tree, tree, tree);
+extern int operand_equal_p (const_tree, const_tree, unsigned int);
+extern int multiple_of_p (tree, const_tree, const_tree);
+#define omit_one_operand(T1,T2,T3)\
+   omit_one_operand_loc (UNKNOWN_LOCATION, T1, T2, T3)
+extern tree omit_one_operand_loc (location_t, tree, tree, tree);
+#define omit_two_operands(T1,T2,T3,T4)\
+   omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4)
+extern tree omit_two_operands_loc (location_t, tree, tree, tree, tree);
+#define invert_truthvalue(T)\
+   invert_truthvalue_loc (UNKNOWN_LOCATION, T)
+extern tree invert_truthvalue_loc (location_t, tree);
+extern tree fold_unary_to_constant (enum tree_code, tree, tree);
+extern tree fold_binary_to_constant (enum tree_code, tree, tree, tree);
+extern tree fold_read_from_constant_string (tree);
+extern tree int_const_binop (enum tree_code, const_tree, const_tree);
+#define build_fold_addr_expr(T)\
+        build_fold_addr_expr_loc (UNKNOWN_LOCATION, (T))
+extern tree build_fold_addr_expr_loc (location_t, tree);
+#define build_fold_addr_expr_with_type(T,TYPE)\
+        build_fold_addr_expr_with_type_loc (UNKNOWN_LOCATION, (T), TYPE)
+extern tree build_fold_addr_expr_with_type_loc (location_t, tree, tree);
+extern tree fold_build_cleanup_point_expr (tree type, tree expr);
+extern tree fold_strip_sign_ops (tree);
+#define build_fold_indirect_ref(T)\
+        build_fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
+extern tree build_fold_indirect_ref_loc (location_t, tree);
+#define fold_indirect_ref(T)\
+        fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
+extern tree fold_indirect_ref_loc (location_t, tree);
+extern tree build_simple_mem_ref_loc (location_t, tree);
+#define build_simple_mem_ref(T)\
+	build_simple_mem_ref_loc (UNKNOWN_LOCATION, T)
+extern double_int mem_ref_offset (const_tree);
+extern tree build_invariant_address (tree, tree, HOST_WIDE_INT);
+extern tree constant_boolean_node (bool, tree);
+extern tree div_if_zero_remainder (enum tree_code, const_tree, const_tree);
+
+extern bool tree_swap_operands_p (const_tree, const_tree, bool);
+extern enum tree_code swap_tree_comparison (enum tree_code);
+
+extern bool ptr_difference_const (tree, tree, HOST_WIDE_INT *);
+extern enum tree_code invert_tree_comparison (enum tree_code, bool);
+
+extern bool tree_unary_nonzero_warnv_p (enum tree_code, tree, tree, bool *);
+extern bool tree_binary_nonzero_warnv_p (enum tree_code, tree, tree, tree op1,
+                                         bool *);
+extern bool tree_single_nonzero_warnv_p (tree, bool *);
+extern bool tree_unary_nonnegative_warnv_p (enum tree_code, tree, tree, bool *);
+extern bool tree_binary_nonnegative_warnv_p (enum tree_code, tree, tree, tree,
+                                             bool *);
+extern bool tree_single_nonnegative_warnv_p (tree t, bool *strict_overflow_p);
+extern bool tree_call_nonnegative_warnv_p (tree, tree, tree, tree, bool *);
+
+extern bool fold_real_zero_addition_p (const_tree, const_tree, int);
+extern tree combine_comparisons (location_t, enum tree_code, enum tree_code,
+				 enum tree_code, tree, tree, tree);
+extern void debug_fold_checksum (const_tree);
+extern bool may_negate_without_overflow_p (const_tree);
+#define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N)
+extern tree round_up_loc (location_t, tree, int);
+#define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N)
+extern tree round_down_loc (location_t, tree, int);
+extern tree size_int_kind (HOST_WIDE_INT, enum size_type_kind);
+#define size_binop(CODE,T1,T2)\
+   size_binop_loc (UNKNOWN_LOCATION, CODE, T1, T2)
+extern tree size_binop_loc (location_t, enum tree_code, tree, tree);
+#define size_diffop(T1,T2)\
+   size_diffop_loc (UNKNOWN_LOCATION, T1, T2)
+extern tree size_diffop_loc (location_t, tree, tree);
+
+/* Return an expr equal to X but certainly not valid as an lvalue.  */
+#define non_lvalue(T) non_lvalue_loc (UNKNOWN_LOCATION, T)
+extern tree non_lvalue_loc (location_t, tree);
+
+extern bool tree_expr_nonnegative_p (tree);
+extern bool tree_expr_nonnegative_warnv_p (tree, bool *);
+extern tree make_range (tree, int *, tree *, tree *, bool *);
+extern tree make_range_step (location_t, enum tree_code, tree, tree, tree,
+			     tree *, tree *, int *, bool *);
+extern tree build_range_check (location_t, tree, tree, int, tree, tree);
+extern bool merge_ranges (int *, tree *, tree *, int, tree, tree, int,
+			  tree, tree);
+
+#endif // GCC_FOLD_CONST_H
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 16e8915c0c58f292c26843ef32542b7a432aa322..26e58bef0f0b2b8d028b391f9719af0c97d1fe62 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -7,6 +7,33 @@
 	* trans-expr.c: Include only gimplify.h and gimple.h as needed.
 	* trans-openmp.c: Likewise.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
 	* f95-lang.c: Don't include gimple.h.
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index 9c9fd4ffbf0488ea1e2b2d1acae312c42a7eba08..0a0f8e0f3b569a0efe87e7efa542e4949deae8b1 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "constructor.h"
 #include "tree.h"
+#include "stringpool.h"
 
 /* Macros to access allocate memory for gfc_data_variable,
    gfc_data_value and gfc_data.  */
diff --git a/gcc/fortran/iresolve.c b/gcc/fortran/iresolve.c
index af452b3288874260eb9b12a3a8ddc28a943dafa5..f31340f5d5525674f4df022ca93f4c9e1c276381 100644
--- a/gcc/fortran/iresolve.c
+++ b/gcc/fortran/iresolve.c
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "gfortran.h"
 #include "intrinsic.h"
 #include "constructor.h"
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 71e3862189a92b4175ec24a93d255748ec795922..539780aaa245745cd4e76301f88e22fc3bb812f5 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "match.h"
 #include "parse.h"
 #include "tree.h"
+#include "stringpool.h"
 
 int gfc_matching_ptr_assignment = 0;
 int gfc_matching_procptr_assignment = 0;
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index c390a95952e6b7a47abd853089e6fff6591ccdb7..0cd4801857706c9363e2b4ddbab5eb55ccb441b9 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -74,6 +74,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "constructor.h"
 #include "cpp.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "scanner.h"
 #include <zlib.h>
 
diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c
index e905b3a67dcb503894826893343ed3f7be91719b..d0ee41a089c7ba0c6edd03243913caf3008ab249 100644
--- a/gcc/fortran/target-memory.c
+++ b/gcc/fortran/target-memory.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "machmode.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "gfortran.h"
 #include "arith.h"
 #include "constructor.h"
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index e2234b1ae0cadf9e0ecf3610b1fa6893438d5b37..2266c1bfa5668d6ab50c43fcd928a44edff0a66a 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -98,6 +98,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "gfortran.h"
 #include "trans.h"
 #include "trans-types.h"
diff --git a/gcc/fortran/trans-const.c b/gcc/fortran/trans-const.c
index a217c47141152eb25f5145660fcf07935fdff13f..f5a2b18ecba1f24426ae46feb526ab0a1ee175e6 100644
--- a/gcc/fortran/trans-const.c
+++ b/gcc/fortran/trans-const.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "realmpfr.h"
 #include "diagnostic-core.h"	/* For fatal_error.  */
 #include "double-int.h"
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 1df3bb44e7a28c393a61c250e42e94b466fa5f77..f974c6e81075d13ae7dad38d6a188d2c2594fba8 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -25,6 +25,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "attribs.h"
 #include "tree-dump.h"
 #include "gimple-expr.h"	/* For create_tmp_var_raw.  */
 #include "ggc.h"
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index b932fa4d715c5308888403ca87f411ba00667175..41b2f94679ab6f5e4d863b3553a05980f5a70f94 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "diagnostic-core.h"	/* For fatal_error.  */
 #include "langhooks.h"
 #include "flags.h"
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index 042911f8ea1d897d67d51acd9f46918ff24aae82..4acdc8dc7564ed73a5670079a39b16cf3ab0d7fb 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -26,6 +26,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"		/* For UNITS_PER_WORD.  */
 #include "tree.h"
+#include "stringpool.h"
+#include "tree-nested.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "diagnostic-core.h"	/* For internal_error.  */
 #include "toplev.h"	/* For rest_of_decl_compilation.  */
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 5fa1cdc091ea9b862620ce73464fb8e349a3bef1..9b46a4eef3eeed907a59a1aed7bce7e5b31702ed 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "diagnostic-core.h"	/* For internal_error.  */
 #include "gfortran.h"
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index 13c87058ddd605dd482ab5da127669cd310a765e..d23af17d81e066c220800ba5df3e1b085d857ca0 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "gimple.h"
 #include "gimplify.h"	/* For create_tmp_var_raw.  */
+#include "stringpool.h"
 #include "diagnostic-core.h"	/* For internal_error.  */
 #include "gfortran.h"
 #include "trans.h"
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index 62e690d407c7a1ac2fe33dcb3830567df0430730..4f211975581e39b1c0c1e96f7b25e1b56df68e0c 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "gfortran.h"
 #include "flags.h"
 #include "trans.h"
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index fa84d5dab8154d1b5083bebb1ade09b26e1aa107..21d9f285d17c0ee82edab108a7a4a021fc4f8bea 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -34,6 +34,8 @@ along with GCC; see the file COPYING3.  If not see
 			   FLOAT_TYPE_SIZE, DOUBLE_TYPE_SIZE,
 			   LONG_DOUBLE_TYPE_SIZE and LIBGCC2_HAS_TF_MODE.  */
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "langhooks.h"	/* For iso-c-bindings.def.  */
 #include "target.h"
 #include "ggc.h"
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index ef20a20f0182cd227d233fdd1fa0dc49d2143d9b..204cbff324736979dd438db40fbca05a3e8683ff 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tree.h"
 #include "gimple-expr.h"	/* For create_tmp_var_raw.  */
+#include "gimple.h"
+#include "stringpool.h"
 #include "tree-iterator.h"
 #include "diagnostic-core.h"  /* For internal_error.  */
 #include "flags.h"
diff --git a/gcc/function.c b/gcc/function.c
index 724b969491729b2a1fb9b036cb034a931067675f..87953e335c4a75f08a43024ad93a6fe86d90aaee 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -37,6 +37,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl-error.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
+#include "stringpool.h"
 #include "flags.h"
 #include "except.h"
 #include "function.h"
diff --git a/gcc/function.h b/gcc/function.h
index 9bb6ff04c5013cca34abb4bf5c6aa0466604ee81..c00bfe2aa3729f8be1e8794e168da207dce0b136 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -822,4 +822,25 @@ extern unsigned int emit_initial_value_sets (void);
 extern bool optimize_function_for_size_p (struct function *);
 extern bool optimize_function_for_speed_p (struct function *);
 
+/* In function.c */
+extern void expand_function_end (void);
+extern void expand_function_start (tree);
+extern void stack_protect_epilogue (void);
+extern void init_dummy_function_start (void);
+extern void expand_dummy_function_end (void);
+extern void allocate_struct_function (tree, bool);
+extern void push_struct_function (tree fndecl);
+extern void init_function_start (tree);
+extern bool use_register_for_decl (const_tree);
+extern void generate_setjmp_warnings (void);
+extern void init_temp_slots (void);
+extern void free_temp_slots (void);
+extern void pop_temp_slots (void);
+extern void push_temp_slots (void);
+extern void preserve_temp_slots (rtx);
+extern int aggregate_value_p (const_tree, const_tree);
+extern void push_function_context (void);
+extern void pop_function_context (void);
+extern gimple_seq gimplify_parameters (void);
+
 #endif  /* GCC_FUNCTION_H */
diff --git a/gcc/gcc-symtab.h b/gcc/gcc-symtab.h
new file mode 100644
index 0000000000000000000000000000000000000000..a5bbad265a374de740bb31c6bc36a1c92204b4a7
--- /dev/null
+++ b/gcc/gcc-symtab.h
@@ -0,0 +1,28 @@
+/* Declarations for symtab.c.
+   FIXME - This file should be named symtab.h, but that name conflicts
+           with libcpp's symtab.h.
+
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_SYMTAB_H
+#define GCC_SYMTAB_H
+
+extern void change_decl_assembler_name (tree, tree);
+
+#endif  // GCC_SYMTAB_H
diff --git a/gcc/genattrtab.c b/gcc/genattrtab.c
index f79380d6e4600c09503ebf2a01c3d3a59020ad4f..c0125d103b71495b4fef6f0b85e809790a2b3572 100644
--- a/gcc/genattrtab.c
+++ b/gcc/genattrtab.c
@@ -5101,6 +5101,9 @@ write_header (FILE *outf)
   fprintf (outf, "#include \"coretypes.h\"\n");
   fprintf (outf, "#include \"tm.h\"\n");
   fprintf (outf, "#include \"tree.h\"\n");
+  fprintf (outf, "#include \"varasm.h\"\n");
+  fprintf (outf, "#include \"stor-layout.h\"\n");
+  fprintf (outf, "#include \"calls.h\"\n");
   fprintf (outf, "#include \"rtl.h\"\n");
   fprintf (outf, "#include \"insn-attr.h\"\n");
   fprintf (outf, "#include \"tm_p.h\"\n");
diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index f6c4b91c42e202ebfd8529da626cf583e819fa59..3ab480428aa917cff9aabddf6ec8ddd73d2db446 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -9666,6 +9666,9 @@ main (int argc, char **argv)
 		"#include \"coretypes.h\"\n"
 		"#include \"tm.h\"\n"
 		"#include \"tree.h\"\n"
+		"#include \"varasm.h\"\n"
+		"#include \"stor-layout.h\"\n"
+		"#include \"calls.h\"\n"
 		"#include \"rtl.h\"\n"
 		"#include \"tm_p.h\"\n"
 		"#include \"insn-config.h\"\n"
diff --git a/gcc/genemit.c b/gcc/genemit.c
index 724a114da4461dff347796a102498cfd24679613..03831bfc9de7735b15e095783063b243298c1ec6 100644
--- a/gcc/genemit.c
+++ b/gcc/genemit.c
@@ -791,6 +791,9 @@ from the machine description file `md'.  */\n\n");
   printf ("#include \"coretypes.h\"\n");
   printf ("#include \"tm.h\"\n");
   printf ("#include \"tree.h\"\n");
+  printf ("#include \"varasm.h\"\n");
+  printf ("#include \"stor-layout.h\"\n");
+  printf ("#include \"calls.h\"\n");
   printf ("#include \"rtl.h\"\n");
   printf ("#include \"tm_p.h\"\n");
   printf ("#include \"function.h\"\n");
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index ecf1ef00385a7638b0050acff8e8144ca630970b..86e9ca220065214f16a7688d9afeb33b87440b60 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -1770,7 +1770,7 @@ open_base_files (void)
       "hard-reg-set.h", "basic-block.h", "cselib.h", "insn-addr.h",
       "optabs.h", "libfuncs.h", "debug.h", "ggc.h", "cgraph.h",
       "gimple.h", "gimple-iterator.h", "gimple-ssa.h", "tree-cfg.h",
-      "tree-phinodes.h", "ssa-iterators.h", "tree-ssanames.h",
+      "tree-phinodes.h", "ssa-iterators.h", "stringpool.h", "tree-ssanames.h",
       "tree-ssa-loop.h", "tree-ssa-loop-ivopts.h", "tree-ssa-loop-manip.h",
       "tree-ssa-loop-niter.h", "tree-into-ssa.h", "tree-dfa.h", 
       "tree-ssa.h", "reload.h", "cpp-id-data.h", "tree-chrec.h",
diff --git a/gcc/genopinit.c b/gcc/genopinit.c
index 3efb71e249e44259e5154bf94d6f2b325dcea327..2e736ce687b0c25ae83bb2dac8b3906baa94401c 100644
--- a/gcc/genopinit.c
+++ b/gcc/genopinit.c
@@ -405,6 +405,9 @@ main (int argc, char **argv)
 	   "#include \"coretypes.h\"\n"
 	   "#include \"tm.h\"\n"
 	   "#include \"tree.h\"\n"
+	   "#include \"varasm.h\"\n"
+	   "#include \"stor-layout.h\"\n"
+	   "#include \"calls.h\"\n"
 	   "#include \"rtl.h\"\n"
 	   "#include \"tm_p.h\"\n"
 	   "#include \"flags.h\"\n"
diff --git a/gcc/genoutput.c b/gcc/genoutput.c
index 2a7ee2391db4d5ab96e63a2a11c2e4afed31c479..de8979bc7266f55feaf3ba31a10ac484fd85ddf0 100644
--- a/gcc/genoutput.c
+++ b/gcc/genoutput.c
@@ -239,6 +239,9 @@ output_prologue (void)
   printf ("#include \"flags.h\"\n");
   printf ("#include \"ggc.h\"\n");
   printf ("#include \"tree.h\"\n");
+  printf ("#include \"varasm.h\"\n");
+  printf ("#include \"stor-layout.h\"\n");
+  printf ("#include \"calls.h\"\n");
   printf ("#include \"rtl.h\"\n");
   printf ("#include \"expr.h\"\n");
   printf ("#include \"insn-codes.h\"\n");
diff --git a/gcc/genpeep.c b/gcc/genpeep.c
index 877fde3ec906b2fa9163a6dcffa4a80783e356a3..8d9d25dd772b1724f8da539ab83d42d81acfb90f 100644
--- a/gcc/genpeep.c
+++ b/gcc/genpeep.c
@@ -360,6 +360,9 @@ from the machine description file `md'.  */\n\n");
   printf ("#include \"tm.h\"\n");
   printf ("#include \"insn-config.h\"\n");
   printf ("#include \"tree.h\"\n");
+  printf ("#include \"varasm.h\"\n");
+  printf ("#include \"stor-layout.h\"\n");
+  printf ("#include \"calls.h\"\n");
   printf ("#include \"rtl.h\"\n");
   printf ("#include \"tm_p.h\"\n");
   printf ("#include \"regs.h\"\n");
diff --git a/gcc/genpreds.c b/gcc/genpreds.c
index f3d9dac9c55008bcb4d078aff0cdc77e237a58c7..c27ae88f1a040e29608f9c8a7caf585370283b3b 100644
--- a/gcc/genpreds.c
+++ b/gcc/genpreds.c
@@ -1302,6 +1302,9 @@ write_insn_preds_c (void)
 #include \"tm.h\"\n\
 #include \"rtl.h\"\n\
 #include \"tree.h\"\n\
+#include \"varasm.h\"\n\
+#include \"stor-layout.h\"\n\
+#include \"calls.h\"\n\
 #include \"tm_p.h\"\n\
 #include \"function.h\"\n\
 #include \"insn-config.h\"\n\
diff --git a/gcc/gimple-builder.c b/gcc/gimple-builder.c
index 6b53221b6b3f492cb342330c55be353e681dfcd6..17cd2e1b887ecd9b73543042285e2b580dc17d32 100644
--- a/gcc/gimple-builder.c
+++ b/gcc/gimple-builder.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "gimple.h"
 #include "tree-ssanames.h"
 
diff --git a/gcc/gimple-expr.c b/gcc/gimple-expr.c
index 9156f952784e9750aee22027744652696cca48f3..77660a34c6de374eac68281193531261418c6991 100644
--- a/gcc/gimple-expr.c
+++ b/gcc/gimple-expr.c
@@ -25,7 +25,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "tree.h"
 #include "gimple.h"
+#include "stringpool.h"
 #include "gimplify.h"
+#include "stor-layout.h"
 #include "demangle.h"
 #include "gimple-ssa.h"
 
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index a5277eb9b0ff3fd25e18a3baecf07c7bbeadb5bf..5493c5f3ea0ca4c729f2b80c283746c8e723486e 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -23,6 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "expr.h"
+#include "stmt.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "function.h"
 #include "dumpfile.h"
diff --git a/gcc/gimple-low.c b/gcc/gimple-low.c
index 3f9ac575e64f58ad94ad93f396a8d76ed014d7d6..71f8dfec3f807c438a11f4e38b9c1866bfba2dbe 100644
--- a/gcc/gimple-low.c
+++ b/gcc/gimple-low.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "tree-nested.h"
+#include "calls.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "tree-iterator.h"
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c
index b20d11ae3d48e99ae036abb35b2dca0689a95bc2..cdf1dbd417e7064b4ecfcc459fb61e5248cd6e6b 100644
--- a/gcc/gimple-pretty-print.c
+++ b/gcc/gimple-pretty-print.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "diagnostic.h"
 #include "gimple-pretty-print.h"
 #include "hashtab.h"
diff --git a/gcc/gimple-ssa-isolate-paths.c b/gcc/gimple-ssa-isolate-paths.c
index c42f112da8b3886c4658c08948d3cc0ce5927855..1b7e3ff7d76944991919d18add19eead35f99070 100644
--- a/gcc/gimple-ssa-isolate-paths.c
+++ b/gcc/gimple-ssa-isolate-paths.c
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
 #include "tree-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "gimple-ssa.h"
 #include "tree-ssa-operands.h"
diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c
index 51bf7c7c01fc4808745c440c61ab98905d04a7cd..4eb897fd40cee8f01705148212f9064c0a2dfeff 100644
--- a/gcc/gimple-ssa-strength-reduction.c
+++ b/gcc/gimple-ssa-strength-reduction.c
@@ -40,6 +40,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
+#include "stor-layout.h"
+#include "expr.h"
 #include "basic-block.h"
 #include "tree-pass.h"
 #include "cfgloop.h"
@@ -48,6 +50,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "domwalk.h"
 #include "pointer-set.h"
diff --git a/gcc/gimple-streamer-in.c b/gcc/gimple-streamer-in.c
index 6f8f51a18cee220be4fc8b53349dc011203a2ace..f8106fc4e78174346b0d50cf0749407d574f5428 100644
--- a/gcc/gimple-streamer-in.c
+++ b/gcc/gimple-streamer-in.c
@@ -28,6 +28,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "data-streamer.h"
 #include "tree-streamer.h"
diff --git a/gcc/gimple-walk.c b/gcc/gimple-walk.c
index deb4673354a661de3e7fa35c930777c6ea53b505..22f4584a673ee7533355cf78b288bb10fc5450aa 100644
--- a/gcc/gimple-walk.c
+++ b/gcc/gimple-walk.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stmt.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 10d7edc1a39d3ad7924ae74749ae512eee049970..c0316981ef9e24ea6d37b858f8cc06599aa4bccc 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -25,6 +25,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "target.h"
 #include "tree.h"
+#include "calls.h"
+#include "stmt.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "hard-reg-set.h"
 #include "basic-block.h"
diff --git a/gcc/gimplify-me.c b/gcc/gimplify-me.c
index c4818fab75601b14c507580424437e2018297c58..a7e9387b6480d98f36a3aac32f384968daf51080 100644
--- a/gcc/gimplify-me.c
+++ b/gcc/gimplify-me.c
@@ -25,11 +25,14 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stmt.h"
+#include "stor-layout.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimplify.h"
 #include "gimplify-me.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 
 
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index a65d3d1ced6a4a13bba3f6258f50985b572b7bbd..8baa4dcc1786c2aa2a737c230a5b440041799726 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -24,9 +24,16 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "expr.h"
 #include "gimple.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
+#include "stringpool.h"
+#include "calls.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "stmt.h"
+#include "print-tree.h"
 #include "tree-iterator.h"
 #include "tree-inline.h"
 #include "tree-pretty-print.h"
diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog
index 6f6b53e58a060055f349403b0d51e9cbb673f49c..918862ef8fe5bd6d150a3d35e989bc60574192f8 100644
--- a/gcc/go/ChangeLog
+++ b/gcc/go/ChangeLog
@@ -12,6 +12,14 @@
 
 	* go-lang.c: Include only gimplify.h and gimple.h as needed.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
 	* go-lang.c: Include gimplify.h.
diff --git a/gcc/go/go-backend.c b/gcc/go/go-backend.c
index c3ffa3b1deaf59776fc94321bc716142f9554dc0..31d01221fd1c8a587ca77d02a4a45f101fe7829a 100644
--- a/gcc/go/go-backend.c
+++ b/gcc/go/go-backend.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "simple-object.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "intl.h"
 #include "output.h"	/* for assemble_string */
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index 5ff529fc62b1e0d442ed915051d0c0f1ef078da6..83f91d5daf5479b5f07cf2245d4d5998a13e09c6 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -25,6 +25,9 @@
 #include <gmp.h>
 
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "tree-iterator.h"
 #include "gimple.h"
 #include "toplev.h"
diff --git a/gcc/go/go-lang.c b/gcc/go/go-lang.c
index aa1d80b5be2bc498ac6567f1b118a053976c471c..93a0446efe620585817216f6cd2aebe80a4ed235 100644
--- a/gcc/go/go-lang.c
+++ b/gcc/go/go-lang.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree.h"
 #include "gimple.h"
 #include "gimplify.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "toplev.h"
 #include "debug.h"
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index 823c5e1a4c8c85f95fb8c9dcd2135c119fac7e25..14c10d66a042e187f50b45a503d005ead8307970 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -11,6 +11,8 @@
 #include "toplev.h"
 #include "intl.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "gimple.h"
 #include "gimplify.h"
 #include "tree-iterator.h"
diff --git a/gcc/go/gofrontend/gogo-tree.cc b/gcc/go/gofrontend/gogo-tree.cc
index 12a0889397da8bfda8699c65116e3b19ce09fd65..001d24d238d6cf71301645856c587c4a0b19fd11 100644
--- a/gcc/go/gofrontend/gogo-tree.cc
+++ b/gcc/go/gofrontend/gogo-tree.cc
@@ -8,6 +8,9 @@
 
 #include "toplev.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "gimple.h"
 #include "gimplify.h"
 #include "tree-iterator.h"
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index 1b2cd998f2cd223a6f0eec94f3fd20b1acec9b1b..7d705bb339443235b0949827639a23232df9e279 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -42,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index a4cf1d5c627a3035d9ca0897f02c5bc1b47e0b09..867747041ae360347859b97dedc3b2b0c7289149 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "internal-fn.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "expr.h"
 #include "optabs.h"
 #include "gimple.h"
diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c
index 99fbfe7455a02915db755ce4cd666f68f8454f3d..38cf378d2d4cd0463a86e98a415e640c388f54e6 100644
--- a/gcc/ipa-devirt.c
+++ b/gcc/ipa-devirt.c
@@ -110,7 +110,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "calls.h"
 #include "cgraph.h"
+#include "expr.h"
 #include "tree-pass.h"
 #include "ggc.h"
 #include "pointer-set.h"
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index a558dbc75ff0d3b0ac68e2566ac061cffcfb8885..662196f058bda27754e33541f2207a0e7a315c73 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -69,6 +69,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "print-tree.h"
 #include "tree-inline.h"
 #include "langhooks.h"
 #include "flags.h"
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index c9a373bc08feec546747f319c83ef7b6df2d56af..fbb63da7dc83beab8c68fb25721f1a3654f67785 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -94,6 +94,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "trans-mem.h"
+#include "calls.h"
 #include "tree-inline.h"
 #include "langhooks.h"
 #include "flags.h"
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 65f9da12e986e698dcd0d2203ee8ce7cd5dfc2be..d122dd555392080b1e970d29f740b441375ae044 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -22,6 +22,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tree.h"
 #include "gimple.h"
+#include "expr.h"
+#include "stor-layout.h"
+#include "print-tree.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 52be4bf8869f9c54f84a9bdbbbb730fa4c0c064f..a241a699c5c276e65af24896029f74163281b1bf 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -36,6 +36,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "calls.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 9f80086c747fcb7104ee540fb5f67c15ffea3447..27208deb5192d7e1e48bc7c0985cd02eb8a0aee0 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "calls.h"
 #include "gimple.h"
 #include "tree-inline.h"
 #include "tree-pass.h"
diff --git a/gcc/ipa-split.c b/gcc/ipa-split.c
index e55b3f59dbcc4d0463b45c6164027a9ee005448b..59d174220c3ef38c3975793d17d9e3c5a8fbf6ad 100644
--- a/gcc/ipa-split.c
+++ b/gcc/ipa-split.c
@@ -79,6 +79,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tree.h"
 #include "gimple.h"
+#include "stringpool.h"
+#include "expr.h"
+#include "calls.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
@@ -89,6 +92,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-dfa.h"
diff --git a/gcc/ipa.c b/gcc/ipa.c
index e541090ee3ad0d9745b37dff33a4dce50d46efc9..3950d4eb8568ec2bc61d296e4e4aa3b3d3e88599 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "calls.h"
+#include "stringpool.h"
 #include "cgraph.h"
 #include "tree-pass.h"
 #include "gimple.h"
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 3ffa76da8c298f95332c049d1b4311b312239c73..0e277e4bf40239022bb57639f499d8d2f2d96c0a 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -12,6 +12,30 @@
 
 	* java-gimplify.c: Include only gimplify.h and gimple.h as needed.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
 	* java-gimplify.c: Include gimplify.h.
diff --git a/gcc/java/builtins.c b/gcc/java/builtins.c
index c05543782ae99a64a1d6e6e78fb83fecdb516712..46d1d86820cff49533d222985173f50fa03fade8 100644
--- a/gcc/java/builtins.c
+++ b/gcc/java/builtins.c
@@ -31,6 +31,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "ggc.h"
 #include "flags.h"
 #include "langhooks.h"
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 251873e08110314343c910842be7271a605d1104..58bc92f94d94b4aa8c6a03fd506bb27c0a433e6f 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -27,6 +27,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "flags.h"
 #include "java-tree.h"
 #include "jcf.h"
diff --git a/gcc/java/constants.c b/gcc/java/constants.c
index ca411b5f9ff9740a906ddd531d352236e179991f..64f6e6964035807efc28b629809d9937280e09f1 100644
--- a/gcc/java/constants.c
+++ b/gcc/java/constants.c
@@ -26,6 +26,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "tm.h"
 #include "jcf.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "java-tree.h"
 #include "diagnostic-core.h"
 #include "toplev.h"
diff --git a/gcc/java/decl.c b/gcc/java/decl.c
index 0a2cecc3fef6e0f6a17d0a12404ac2305f8da903..70e21b071f0d5ced1d26b15ac3cf8826a8c6322b 100644
--- a/gcc/java/decl.c
+++ b/gcc/java/decl.c
@@ -28,6 +28,9 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "diagnostic-core.h"
 #include "toplev.h"
 #include "flags.h"
diff --git a/gcc/java/except.c b/gcc/java/except.c
index b6d0c8d6c0fab81ef61ef4b62c7a31bfead6c6c6..9674abac22cb7995d577519a26cb918ae7f26326 100644
--- a/gcc/java/except.c
+++ b/gcc/java/except.c
@@ -26,6 +26,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "java-tree.h"
 #include "javaop.h"
 #include "java-opcodes.h"
diff --git a/gcc/java/expr.c b/gcc/java/expr.c
index 6dc00c6fc5d38113799830869c4e641e66369662..c62d66dba0210c202124f1c7491817e1e2aa79ef 100644
--- a/gcc/java/expr.c
+++ b/gcc/java/expr.c
@@ -33,6 +33,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 				   PARM_BOUNDARY.  */
 				   
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "java-tree.h"
 #include "javaop.h"
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index fbd4e00e029a4555c0b09aaf9e77f95a31ff04b5..9799523f142c5f4a9bddaaa34b071d42174634bf 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -27,6 +27,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "obstack.h"
 #include "flags.h"
 #include "java-except.h"
diff --git a/gcc/java/mangle.c b/gcc/java/mangle.c
index 10557e94ebde507e541ce5c81196be04a51d49c7..c4e088303c1330cb5ab6424241ccb984c3c779b4 100644
--- a/gcc/java/mangle.c
+++ b/gcc/java/mangle.c
@@ -29,6 +29,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "coretypes.h"
 #include "jcf.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "java-tree.h"
 #include "obstack.h"
 #include "diagnostic-core.h"
diff --git a/gcc/java/resource.c b/gcc/java/resource.c
index 54403d9f187e61334fabe78852a1bb6da5eef0d6..17155b8c362b496a43e4b4d4684a7251857101cc 100644
--- a/gcc/java/resource.c
+++ b/gcc/java/resource.c
@@ -25,6 +25,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "java-tree.h"
 #include "jcf.h"
 #include "diagnostic-core.h"
diff --git a/gcc/java/typeck.c b/gcc/java/typeck.c
index 9dbb3f0291b1e52b19a45b44005b88320dd1edbc..3a0aa3960a2352c84ac6656c73f4b6732616c736 100644
--- a/gcc/java/typeck.c
+++ b/gcc/java/typeck.c
@@ -27,6 +27,8 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "obstack.h"
 #include "flags.h"
 #include "java-tree.h"
diff --git a/gcc/java/verify-glue.c b/gcc/java/verify-glue.c
index 21acc4259dfc9bd28266a15efb3bc003c394c1ad..022f4c4e058267c21eea014169dbed8e104f1a6d 100644
--- a/gcc/java/verify-glue.c
+++ b/gcc/java/verify-glue.c
@@ -28,6 +28,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc.  */
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "parse.h"
 
 #include "verify.h"
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index ec0dd4d75ee367683bb9c6b3fcf256f08acff7d5..4b72f2a6238d54abde48af2acfe8bc395fb1fdcc 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -25,6 +25,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "toplev.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "attribs.h"
 #include "tree-inline.h"
 #include "gimple.h"
 #include "gimplify.h"
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index 99dbf96b7a56ce19be3ddbe53caadac52aba9ce9..d82759955d871b0da07e19fed7e32e88db917bad 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "gimple.h"
 #include "expr.h"
 #include "flags.h"
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 98cf28ff91758b57a6861699a69727748385c4c7..7b9f4ca496ecac1d6e3ac880095c007f85007b07 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "toplev.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "expr.h"
 #include "flags.h"
 #include "params.h"
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 5176e35b70d43063122ea4cacfb7db70e61e7d02..5e264fceee0c11d3de1b957cb540cc84cdc2b1ac 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -25,6 +25,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "expr.h"
 #include "flags.h"
 #include "params.h"
diff --git a/gcc/lto/ChangeLog b/gcc/lto/ChangeLog
index 266d00ff1e6283944189ea737677860e3127c2e3..1b83f22046a79afee85ae21ed2ad1f81e86a0889 100644
--- a/gcc/lto/ChangeLog
+++ b/gcc/lto/ChangeLog
@@ -2,6 +2,13 @@
 
 	* lto-partition.c lto-symtab.c lto.c Adjust.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* lto-lang.c: Include stringpool.h.
+	Include stor-layout.h.
+	* lto-partition.c: Include gcc-symtab.h.
+	* lto.c: Include stor-layout.h.
+
 2013-10-31  David Malcolm  <dmalcolm@redhat.com>
 
 	Automated part of renaming of symtab_node_base to symtab_node.
diff --git a/gcc/lto/lto-lang.c b/gcc/lto/lto-lang.c
index b56c22b8a87d01c3b3fe7d8cd924687e1a6bcc46..cb15ce32fa7115bd8396a87d152c1d5503a1ddd7 100644
--- a/gcc/lto/lto-lang.c
+++ b/gcc/lto/lto-lang.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "flags.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "target.h"
 #include "langhooks.h"
 #include "langhooks-def.h"
diff --git a/gcc/lto/lto-partition.c b/gcc/lto/lto-partition.c
index e0d020d30ec4904d0ee3bc9163e966c0003a6655..42d78307dedcdc248f6f71fcbad1ee9af34818bb 100644
--- a/gcc/lto/lto-partition.c
+++ b/gcc/lto/lto-partition.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "toplev.h"
 #include "tree.h"
+#include "gcc-symtab.h"
 #include "gimple.h"
 #include "tm.h"
 #include "cgraph.h"
diff --git a/gcc/lto/lto.c b/gcc/lto/lto.c
index 6ecac0106e1b70967ee74a3a83bda5863df6d3ec..0211437d5f9a3021a09ccf1781450572bfa7322f 100644
--- a/gcc/lto/lto.c
+++ b/gcc/lto/lto.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "opts.h"
 #include "toplev.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "diagnostic-core.h"
 #include "tm.h"
 #include "cgraph.h"
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 881ac6ed341d33d89e5536ae197535e10084fc72..000ba9e71b179a9c17bf3aa65ba34b1497ca127a 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -12,6 +12,19 @@
 
 	* objc-act.c: Include only gimplify.h and gimple.h as needed.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* 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.
+
 2013-11-12  Andrew MacLeod  <amacleod@redhat.com>
 
 	* objc-act.c: Include gimplify.h.
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 9a640a3edd3641bf29f92f1cfac8d9505770fbb7..d7e8afb6acfbeada31693843ebba5eb42a4cba0e 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -23,6 +23,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
+#include "attribs.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/objc/objc-encoding.c b/gcc/objc/objc-encoding.c
index 532725114a2ac1015719d33ae2b24783f8db9f6c..61d722a77b0943cbf8839b60ab7163b6d54fcc56 100644
--- a/gcc/objc/objc-encoding.c
+++ b/gcc/objc/objc-encoding.c
@@ -21,6 +21,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/objc/objc-gnu-runtime-abi-01.c b/gcc/objc/objc-gnu-runtime-abi-01.c
index f0116831e25bbab4bc59b40aa8124ec8cb28ae20..ef2e033b6ddba5c83bd554785267f57c9f194848 100644
--- a/gcc/objc/objc-gnu-runtime-abi-01.c
+++ b/gcc/objc/objc-gnu-runtime-abi-01.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c
index 000256d83112f2edbcb5b542d7e8189ea008dfdf..9c7bf4529b1bcab8b68c4eb8aeeb54212c29a228 100644
--- a/gcc/objc/objc-next-runtime-abi-01.c
+++ b/gcc/objc/objc-next-runtime-abi-01.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stringpool.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/objc/objc-next-runtime-abi-02.c b/gcc/objc/objc-next-runtime-abi-02.c
index 885047705d48d3c2268f963bfff65cf5a7ec3732..c7215a86682b1a992e3b914f8bcc9f07f4ecdc76 100644
--- a/gcc/objc/objc-next-runtime-abi-02.c
+++ b/gcc/objc/objc-next-runtime-abi-02.c
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/objc/objc-runtime-shared-support.c b/gcc/objc/objc-runtime-shared-support.c
index 45efb780c28dc788a07460d59b187335a61a88a1..9278b39e11be466084b974c784cf89e4fc99cfeb 100644
--- a/gcc/objc/objc-runtime-shared-support.c
+++ b/gcc/objc/objc-runtime-shared-support.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 
 #ifdef OBJCPLUS
 #include "cp/cp-tree.h"
diff --git a/gcc/omp-low.c b/gcc/omp-low.c
index f850f53e441957d2cff45864ef31a203500584d0..783b422a6438efc7ff0a249b17edc7ecdd557d53 100644
--- a/gcc/omp-low.c
+++ b/gcc/omp-low.c
@@ -26,6 +26,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "rtl.h"
 #include "gimple.h"
 #include "gimplify.h"
@@ -43,6 +45,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "ssa-iterators.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "flags.h"
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 661ce58bf4d7cdd33e0f3505030880eddd8df8bd..dcef4809d8b3def856c6c9b0c9dddc4a05405e22 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -29,6 +29,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-config.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "function.h"
diff --git a/gcc/optabs.h b/gcc/optabs.h
index 4de4409342de199bd2cc058ed9c1ad946729b354..6a5ec19a539af25f2baa6726d855527152dca97a 100644
--- a/gcc/optabs.h
+++ b/gcc/optabs.h
@@ -551,5 +551,6 @@ extern void gen_satfract_conv_libfunc (convert_optab, const char *,
 extern void gen_satfractuns_conv_libfunc (convert_optab, const char *,
 					  enum machine_mode,
 					  enum machine_mode);
+extern void init_tree_optimization_optabs (tree);
 
 #endif /* GCC_OPTABS_H */
diff --git a/gcc/passes.c b/gcc/passes.c
index 55ec70f8962b492b8b2e05c76637b54ee9448524..fee1513b4042293927328c963d585c6815a50831 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -30,6 +30,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "input.h"
 #include "tree.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "tm_p.h"
 #include "flags.h"
@@ -63,6 +64,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-into-ssa.h"
diff --git a/gcc/predict.c b/gcc/predict.c
index b9303e2883f0c70733b289454931e4d1adccb9cb..4adc5e44c9e7dde71d1a3b85c091ff8743427092 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "calls.h"
 #include "rtl.h"
 #include "tm_p.h"
 #include "hard-reg-set.h"
diff --git a/gcc/print-rtl.c b/gcc/print-rtl.c
index 7d712c1562d1023eea68230ccd2c5d0efe8c7b7c..833bee92f711742dcfff5ecbe789ef53c9c4b191 100644
--- a/gcc/print-rtl.c
+++ b/gcc/print-rtl.c
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3.  If not see
    generator programs.  */
 #ifndef GENERATOR_FILE
 #include "tree.h"
+#include "print-tree.h"
 #include "flags.h"
 #include "hard-reg-set.h"
 #include "basic-block.h"
diff --git a/gcc/print-rtl.h b/gcc/print-rtl.h
new file mode 100644
index 0000000000000000000000000000000000000000..3cb28d656fb4e2e366bcd3a7db1ec37a3b17c90b
--- /dev/null
+++ b/gcc/print-rtl.h
@@ -0,0 +1,27 @@
+/* Print RTL for GCC.
+   Copyright (C) 1987-2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_PRINT_RTL_H
+#define GCC_PRINT_RTL_H
+
+#ifdef BUFSIZ
+extern void print_rtl (FILE *, const_rtx);
+#endif
+
+#endif  // GCC_PRINT_RTL_H
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index 5916c523f9d4af0189ce35db351dece919a3ed01..1f4bf222aa122072bded163fbe959689a949cd15 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -23,6 +23,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
+#include "print-rtl.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "langhooks.h"
 #include "tree-iterator.h"
diff --git a/gcc/print-tree.h b/gcc/print-tree.h
new file mode 100644
index 0000000000000000000000000000000000000000..7d1a5c82bdc3d6f92d69dd30081aad06136a0510
--- /dev/null
+++ b/gcc/print-tree.h
@@ -0,0 +1,46 @@
+/* Declarations for printing trees in human readable form
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_PRINT_TREE_H
+#define GCC_PRINT_TREE_H
+
+extern void debug_tree (tree);
+extern void debug_raw (const tree_node &ref);
+extern void debug_raw (const tree_node *ptr);
+extern void debug (const tree_node &ref);
+extern void debug (const tree_node *ptr);
+extern void debug_verbose (const tree_node &ref);
+extern void debug_verbose (const tree_node *ptr);
+extern void debug_head (const tree_node &ref);
+extern void debug_head (const tree_node *ptr);
+extern void debug_body (const tree_node &ref);
+extern void debug_body (const tree_node *ptr);
+extern void debug_vec_tree (vec<tree, va_gc> *);
+extern void debug (vec<tree, va_gc> &ref);
+extern void debug (vec<tree, va_gc> *ptr);
+extern void debug_raw (vec<tree, va_gc> &ref);
+extern void debug_raw (vec<tree, va_gc> *ptr);
+#ifdef BUFSIZ
+extern void dump_addr (FILE*, const char *, const void *);
+extern void print_node (FILE *, const char *, tree, int);
+extern void print_node_brief (FILE *, const char *, const_tree, int);
+extern void indent_to (FILE *, int);
+#endif
+
+#endif  // GCC_PRINT_TREE_H
diff --git a/gcc/realmpfr.c b/gcc/realmpfr.c
index 34f77120c5dd830478261eb96d37eb236ef3b8c7..b5c11206d6ce2a205e05be1a8aa5ac78027b92fd 100644
--- a/gcc/realmpfr.c
+++ b/gcc/realmpfr.c
@@ -22,6 +22,7 @@
 #include "coretypes.h"
 #include "realmpfr.h"
 #include "tree.h"	/* For TYPE_MODE in real_from_mpfr.  */
+#include "stor-layout.h"
 
 /* Convert from REAL_VALUE_TYPE to MPFR.  The caller is responsible
    for initializing and clearing the MPFR parameter.  */
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index 3740934b826919e3afd6d03a2d6acdefee6621da..756d3bd586f7ef57da373520ff4cdddfc72f290a 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -154,6 +154,7 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
 #include "rtl-error.h"
 #include "tm_p.h"
 #include "function.h"
diff --git a/gcc/sdbout.c b/gcc/sdbout.c
index f10869922d74908d707e00667480b9bf10892715..8af0bc5af5be392b08d151a9a6f8023d9851c32e 100644
--- a/gcc/sdbout.c
+++ b/gcc/sdbout.c
@@ -45,6 +45,8 @@ AT&T C compiler.  From the example below I would conclude the following:
 #include "tm.h"
 #include "debug.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "vec.h"
 
diff --git a/gcc/sese.c b/gcc/sese.c
index d05b14afbb80d387dea9ce4d80c48e157f9cfdd4..2fe77392bd43c42d80ae299a147b468189c3e3a7 100644
--- a/gcc/sese.c
+++ b/gcc/sese.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop.h"
 #include "tree-into-ssa.h"
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6e174e5575c1f4ab0df29bd721b98a380cafe019..b91ae1ade3f9b633a68b3286c62c1f5b14a3eb8e 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
 #include "tm_p.h"
 #include "regs.h"
 #include "hard-reg-set.h"
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 28fbf7a6bc11c5359bbecf5f2c1357359a45e4c8..37b2de34482187b7a55e3ca62c2d39e8a7b851c6 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -30,6 +30,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "hard-reg-set.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "flags.h"
 #include "except.h"
diff --git a/gcc/stmt.h b/gcc/stmt.h
new file mode 100644
index 0000000000000000000000000000000000000000..514be23a239670ef8165c382ca6801e314d0ff5e
--- /dev/null
+++ b/gcc/stmt.h
@@ -0,0 +1,34 @@
+/* Declarations and data structures for stmt.c.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_STMT_H
+#define GCC_STMT_H
+
+extern void expand_label (tree);
+extern bool parse_output_constraint (const char **, int, int, int,
+				     bool *, bool *, bool *);
+extern bool parse_input_constraint (const char **, int, int, int, int,
+				    const char * const *, bool *, bool *);
+extern tree resolve_asm_operand_names (tree, tree, tree, tree);
+#ifdef HARD_CONST
+/* Silly ifdef to avoid having all includers depend on hard-reg-set.h.  */
+extern tree tree_overlaps_hard_reg_set (tree, HARD_REG_SET *);
+#endif
+
+#endif  // GCC_STMT_H
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index 535b897f80c02c8fcb8871ce8157546b1032833e..0dece714bf8dd19dea0755d159bde9fee8a56b5e 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -23,6 +23,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "varasm.h"
+#include "print-tree.h"
 #include "rtl.h"
 #include "tm_p.h"
 #include "flags.h"
diff --git a/gcc/stor-layout.h b/gcc/stor-layout.h
new file mode 100644
index 0000000000000000000000000000000000000000..706bed4992db15e35bada37fbecb7b50d4ef4e4b
--- /dev/null
+++ b/gcc/stor-layout.h
@@ -0,0 +1,115 @@
+/* Definitions and declarations for stor-layout.c.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_STOR_LAYOUT_H
+#define GCC_STOR_LAYOUT_H
+
+extern void set_min_and_max_values_for_integral_type (tree, int, bool);
+extern void fixup_signed_type (tree);
+extern void internal_reference_types (void);
+extern unsigned int update_alignment_for_field (record_layout_info, tree,
+                                                unsigned int);
+extern record_layout_info start_record_layout (tree);
+extern tree bit_from_pos (tree, tree);
+extern tree byte_from_pos (tree, tree);
+extern void pos_from_bit (tree *, tree *, unsigned int, tree);
+extern void normalize_offset (tree *, tree *, unsigned int);
+extern tree rli_size_unit_so_far (record_layout_info);
+extern tree rli_size_so_far (record_layout_info);
+extern void normalize_rli (record_layout_info);
+extern void place_field (record_layout_info, tree);
+extern void compute_record_mode (tree);
+extern void finish_record_layout (record_layout_info, int);
+extern unsigned int element_precision (const_tree);
+extern void finalize_size_functions (void);
+extern void fixup_unsigned_type (tree);
+extern void initialize_sizetypes (void);
+
+/* Finish up a builtin RECORD_TYPE. Give it a name and provide its
+   fields. Optionally specify an alignment, and then lay it out.  */
+extern void finish_builtin_struct (tree, const char *, tree, tree);
+
+/* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
+   calculates the DECL_SIZE, DECL_SIZE_UNIT, DECL_ALIGN and DECL_MODE
+   fields.  Call this only once for any given decl node.
+
+   Second argument is the boundary that this field can be assumed to
+   be starting at (in bits).  Zero means it can be assumed aligned
+   on any boundary that may be needed.  */
+extern void layout_decl (tree, unsigned);
+
+/* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
+   TYPE_ALIGN and TYPE_MODE fields.  If called more than once on one
+   node, does nothing except for the first time.  */
+extern void layout_type (tree);
+
+/* Construct various nodes representing fract or accum data types.  */
+extern tree make_fract_type (int, int, int);
+extern tree make_accum_type (int, int, int);
+
+#define make_signed_fract_type(P) make_fract_type (P, 0, 0)
+#define make_unsigned_fract_type(P) make_fract_type (P, 1, 0)
+#define make_sat_signed_fract_type(P) make_fract_type (P, 0, 1)
+#define make_sat_unsigned_fract_type(P) make_fract_type (P, 1, 1)
+#define make_signed_accum_type(P) make_accum_type (P, 0, 0)
+#define make_unsigned_accum_type(P) make_accum_type (P, 1, 0)
+#define make_sat_signed_accum_type(P) make_accum_type (P, 0, 1)
+#define make_sat_unsigned_accum_type(P) make_accum_type (P, 1, 1)
+
+#define make_or_reuse_signed_fract_type(P) \
+		make_or_reuse_fract_type (P, 0, 0)
+#define make_or_reuse_unsigned_fract_type(P) \
+		make_or_reuse_fract_type (P, 1, 0)
+#define make_or_reuse_sat_signed_fract_type(P) \
+		make_or_reuse_fract_type (P, 0, 1)
+#define make_or_reuse_sat_unsigned_fract_type(P) \
+		make_or_reuse_fract_type (P, 1, 1)
+#define make_or_reuse_signed_accum_type(P) \
+		make_or_reuse_accum_type (P, 0, 0)
+#define make_or_reuse_unsigned_accum_type(P) \
+		make_or_reuse_accum_type (P, 1, 0)
+#define make_or_reuse_sat_signed_accum_type(P) \
+		make_or_reuse_accum_type (P, 0, 1)
+#define make_or_reuse_sat_unsigned_accum_type(P) \
+		make_or_reuse_accum_type (P, 1, 1)
+
+extern tree make_signed_type (int);
+extern tree make_unsigned_type (int);
+
+/* Return the mode for data of a given size SIZE and mode class CLASS.
+   If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE.
+   The value is BLKmode if no other mode is found.  This is like
+   mode_for_size, but is passed a tree.  */
+extern enum machine_mode mode_for_size_tree (const_tree, enum mode_class, int);
+
+/* Given a VAR_DECL, PARM_DECL or RESULT_DECL, clears the results of
+   a previous call to layout_decl and calls it again.  */
+extern void relayout_decl (tree);
+
+/* variable_size (EXP) is like save_expr (EXP) except that it
+   is for the special case of something that is part of a
+   variable size for a data type.  It makes special arrangements
+   to compute the value at the right time when the data type
+   belongs to a function parameter.  */
+extern tree variable_size (tree);
+
+/* Vector types need to check target flags to determine type.  */
+extern enum machine_mode vector_type_mode (const_tree);
+
+#endif  // GCC_STOR_LAYOUT_H
diff --git a/gcc/stringpool.h b/gcc/stringpool.h
new file mode 100644
index 0000000000000000000000000000000000000000..55592aa3957e1310c0fb0989698dbb5e4942019b
--- /dev/null
+++ b/gcc/stringpool.h
@@ -0,0 +1,43 @@
+/* Declarations and definitons for stringpool.c.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_STRINGPOOL_H
+#define GCC_STRINGPOOL_H
+
+/* Return the (unique) IDENTIFIER_NODE node for a given name.
+   The name is supplied as a char *.  */
+extern tree get_identifier (const char *);
+
+/* If an identifier with the name TEXT (a null-terminated string) has
+   previously been referred to, return that node; otherwise return
+   NULL_TREE.  */
+extern tree maybe_get_identifier (const char *);
+
+/* Identical to get_identifier, except that the length is assumed
+   known.  */
+extern tree get_identifier_with_length (const char *, size_t);
+
+#if GCC_VERSION >= 3000
+#define get_identifier(str) \
+  (__builtin_constant_p (str)				\
+    ? get_identifier_with_length ((str), strlen (str))  \
+    : get_identifier (str))
+#endif
+
+#endif  // GCC_STRINGPOOL_H
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 9426f75399dae5c0956ede1a5eca0106b685ed23..851264d954a69f73a73f196a1202a0100cc732ca 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -22,7 +22,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tm.h"
+#include "rtl.h"
 #include "tree.h"
+#include "print-tree.h"
+#include "varasm.h"
+#include "function.h"
+#include "emit-rtl.h"
 #include "gimple.h"
 #include "tree-inline.h"
 #include "langhooks.h"
@@ -32,7 +37,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic.h"
 #include "timevar.h"
 #include "lto-streamer.h"
-#include "rtl.h"
 #include "output.h"
 
 const char * const ld_plugin_symbol_resolution_names[]=
diff --git a/gcc/targhooks.c b/gcc/targhooks.c
index cddc439546f0a63b38f91049a8d6584102b66202..533d9f3783e1e7a0710c7179d7b1b0c99758c6ff 100644
--- a/gcc/targhooks.c
+++ b/gcc/targhooks.c
@@ -53,6 +53,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "machmode.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "expr.h"
 #include "output.h"
 #include "diagnostic-core.h"
@@ -70,6 +72,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "opts.h"
 #include "gimple.h"
 #include "gimplify.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-alias.h"
 #include "insn-codes.h"
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5666ad239c82eb456e5250dc2a589ea685044cad..7fd31dfa3d954e5361ec48b34035b9623f8f167e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -175,6 +175,11 @@
 	* g++.dg/cpp0x/nsdmi-template3.C: New.
 	* g++.dg/cpp0x/nsdmi-template4.C: Likewise.
 
+2013-11-14  Diego Novillo  <dnovillo@google.com>
+
+	* gcc.dg/plugin/selfassign.c: Include stringpool.h.
+	* gcc.dg/plugin/start_unit_plugin.c: Likewise.
+
 2013-11-14  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
 	* gcc.target/powerpc/ppc64-abi-1.c (stack_frame_t): Remove
diff --git a/gcc/testsuite/gcc.dg/plugin/selfassign.c b/gcc/testsuite/gcc.dg/plugin/selfassign.c
index 2498153a273fc6981b7451d00c447de30b0188e4..cdab74a19ae2bc2d4a2af303d502c2b73a7487d7 100644
--- a/gcc/testsuite/gcc.dg/plugin/selfassign.c
+++ b/gcc/testsuite/gcc.dg/plugin/selfassign.c
@@ -8,6 +8,7 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "toplev.h"
 #include "basic-block.h"
 #include "gimple.h"
diff --git a/gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c b/gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c
index 257aad85a8afd6d405b3f44b8d0c5e5cbe5136e2..39f44626a55ca74b3b9277cf6eac3709e9865a55 100644
--- a/gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c
@@ -11,6 +11,7 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "toplev.h"
 #include "basic-block.h"
 #include "gimple.h"
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 66477b651dc763ebd1ce8d0369130e7824ae3518..5fedcea9002bae869dbeab2aeca9d7f4b6344537 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -29,6 +29,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "line-map.h"
 #include "input.h"
 #include "tree.h"
+#include "varasm.h"
+#include "tree-inline.h"
 #include "realmpfr.h"	/* For GMP/MPFR/MPC versions, in print_version.  */
 #include "version.h"
 #include "rtl.h"
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index 879f37b9177cc04f88dad950e5038c5e678cff21..24860054e6e7086c4a0794e59fa18532b3d98640 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -23,6 +23,10 @@
 #include "hash-table.h"
 #include "tree.h"
 #include "gimple.h"
+#include "calls.h"
+#include "function.h"
+#include "rtl.h"
+#include "emit-rtl.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
@@ -30,6 +34,7 @@
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/trans-mem.h b/gcc/trans-mem.h
index 09f0b4d66e4d2e8a0ae11fe950285ef9e65594cb..d68171fc4ea3c3bbf7425e9952bd508aa6d932c2 100644
--- a/gcc/trans-mem.h
+++ b/gcc/trans-mem.h
@@ -17,6 +17,8 @@
    along with GCC; see the file COPYING3.  If not see
    <http://www.gnu.org/licenses/>.  */
 
+#ifndef GCC_TRANS_MEM_H
+#define GCC_TRANS_MEM_H
 
 /* These defines must match the enumerations in libitm.h.  */
 #define PR_INSTRUMENTEDCODE	0x0001
@@ -37,3 +39,12 @@
 
 extern void compute_transaction_bits (void);
 extern bool is_tm_ending (gimple);
+extern tree build_tm_abort_call (location_t, bool);
+extern bool is_tm_safe (const_tree);
+extern bool is_tm_pure (const_tree);
+extern bool is_tm_may_cancel_outer (tree);
+extern bool is_tm_ending_fndecl (tree);
+extern void record_tm_replacement (tree, tree);
+extern void tm_malloc_replacement (tree);
+
+#endif  // GCC_TRANS_MEM_H
diff --git a/gcc/tree-affine.c b/gcc/tree-affine.c
index 25fd7f287e0e1414a6372f5fb994147573fb9e9c..9e3e1bf0657550c3124ea4d3f8e2568d5c1ed52a 100644
--- a/gcc/tree-affine.c
+++ b/gcc/tree-affine.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "expr.h"
 #include "tree-pretty-print.h"
 #include "pointer-set.h"
 #include "tree-affine.h"
diff --git a/gcc/tree-browser.c b/gcc/tree-browser.c
index dad06a5175acc93eff9135f633d252c8b486edab..c3483a7b3a7c71a43a8ab21686f20c521801dbb3 100644
--- a/gcc/tree-browser.c
+++ b/gcc/tree-browser.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "tree.h"
 #include "tree-pretty-print.h"
+#include "print-tree.h"
 
 #define TB_OUT_FILE stdout
 #define TB_IN_FILE stdin
diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c
index 8e636463deac2f3d60dcdaaf6d5a9a9580f4c93b..6f6b1171b92380dd4e9204ee543f23a964706e39 100644
--- a/gcc/tree-call-cdce.c
+++ b/gcc/tree-call-cdce.c
@@ -24,11 +24,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "basic-block.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "gimple-pretty-print.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 751db306aabf162309a3128296c5a9d4430b2680..a38dec3920f1fc5919047e20c100cef9c172b251 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -24,6 +24,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "tm.h"
 #include "tree.h"
+#include "trans-mem.h"
+#include "stor-layout.h"
+#include "print-tree.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "flags.h"
@@ -39,10 +42,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-dump.h"
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index 0d4c63d425968725415cfa6330f0684136267f21..ec99ed0a1117c950805319df1198c5cf7231e931 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -36,8 +36,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 130674e673f56125baba1b7131fa86e2c6cfee83..05f30e5afa28ea98a6b3d9d32a3c93fbcc16c67a 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "gimple.h"
 #include "gimplify.h"
@@ -31,7 +32,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-iterator.h"
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index dde08bb47eb8bd940aca267865dfcf748613a9bc..190b91ca7521ae2cd6abacb08f1d499c2714d858 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -77,6 +77,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "expr.h"
 #include "gimple-pretty-print.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 678bbb9c4e3228fab26a910b2a49422311b261aa..0d1eb999ccbb24812e5df9a54cb8f1f38b7b275b 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "hashtab.h"
 #include "pointer-set.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "ggc.h"
@@ -38,7 +39,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-inline.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 656ba6f5cb3dd07953c1629f954884dc77c2f119..7778678758583eadf2a647b6c04ce0e8e6b7f278 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "tm.h"
 #include "tree.h"
+#include "expr.h"
+#include "calls.h"
 #include "flags.h"
 #include "function.h"
 #include "except.h"
@@ -34,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-ssa.h"
diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c
index 11337c0c1273b389a4a7b583c8c2d44a41a43feb..7f0c0a1981a7016b3bedb6f28241f6db7a058752 100644
--- a/gcc/tree-emutls.c
+++ b/gcc/tree-emutls.c
@@ -21,6 +21,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "varasm.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
@@ -29,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "cgraph.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "langhooks.h"
 #include "target.h"
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index 81403f25aa09da5b9c1017b2e770c7385f60f2af..2dd073389f89b728b30b26ff1d5868eb352efebf 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -85,6 +85,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -96,6 +97,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-ssa.h"
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index d0eb27ba12c3a2466ad17007ca2c6472ca326711..0a39ee6f4e1d6523415183c31675bcd91e020149 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "diagnostic-core.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "tree-inline.h"
 #include "flags.h"
 #include "params.h"
@@ -43,8 +45,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "function.h"
diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h
index 50ccaab42fc3acd577cbbfe557636c4049ba5da7..d871fc4e4b69e21f63da136eec3dc3e8a4bbb0a4 100644
--- a/gcc/tree-inline.h
+++ b/gcc/tree-inline.h
@@ -183,10 +183,9 @@ extern eni_weights eni_size_weights;
 extern eni_weights eni_time_weights;
 
 /* Function prototypes.  */
-
+void init_inline_once (void);
 extern tree copy_tree_body_r (tree *, int *, void *);
 extern void insert_decl_map (copy_body_data *, tree, tree);
-
 unsigned int optimize_inline_calls (tree);
 tree maybe_inline_call_in_expr (tree);
 bool tree_inlinable_function_p (tree);
@@ -197,9 +196,13 @@ int estimate_num_insns (gimple, eni_weights *);
 int estimate_num_insns_fn (tree, eni_weights *);
 int count_insns_seq (gimple_seq, eni_weights *);
 bool tree_versionable_function_p (tree);
-
 extern tree remap_decl (tree decl, copy_body_data *id);
 extern tree remap_type (tree type, copy_body_data *id);
 extern gimple_seq copy_gimple_seq_and_replace_locals (gimple_seq seq);
+extern bool debug_find_tree (tree, tree);
+
+/* This is in tree-inline.c since the routine uses
+   data structures from the inliner.  */
+extern tree build_duplicate_type (tree);
 
 #endif /* GCC_TREE_INLINE_H */
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index ee86f2cfa9ddd0e7aa79bf36155d85404b245233..b2b57992d55ae91632de41729dd27f277760d629 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -35,8 +35,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-inline.h"
diff --git a/gcc/tree-iterator.h b/gcc/tree-iterator.h
index f75938907133edafba1c72beea898a40c74d997a..b5217f7787377b4efcd45aee870cdc73450c142e 100644
--- a/gcc/tree-iterator.h
+++ b/gcc/tree-iterator.h
@@ -117,5 +117,7 @@ extern tree alloc_stmt_list (void);
 extern void free_stmt_list (tree);
 extern void append_to_statement_list (tree, tree *);
 extern void append_to_statement_list_force (tree, tree *);
+extern tree expr_first (tree);
+extern tree expr_last (tree);
 
 #endif /* GCC_TREE_ITERATOR_H  */
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 075487726f47a033f783e9b653e36aaa34c9db44..6f9462c4aec725b6ac195f4f2a54f6529155add4 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -48,10 +48,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
+#include "stor-layout.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop.h"
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index 9b4493bade0152fc971968fe6507083ed0249f14..868c8fd0e1fa8f7767a24ce05946a936d35943b6 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -22,6 +22,8 @@
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stringpool.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "function.h"
 #include "tree-dump.h"
diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c
index b333abf395608aba12f1afa1217d0295772a688d..035428aaec30ee398cd2548ce1117a872e569a31 100644
--- a/gcc/tree-nrv.c
+++ b/gcc/tree-nrv.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-iterator.h"
 #include "gimple-walk.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "langhooks.h"
diff --git a/gcc/tree-object-size.c b/gcc/tree-object-size.c
index 8dcd2aa5d9f4851eb2cd697718259dd56e4b3ee6..785f71eae295d23885737376ef435d84745a8bf7 100644
--- a/gcc/tree-object-size.c
+++ b/gcc/tree-object-size.c
@@ -23,12 +23,14 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "tree-object-size.h"
 #include "diagnostic-core.h"
 #include "gimple-pretty-print.h"
 #include "bitmap.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "tree-ssa-propagate.h"
diff --git a/gcc/tree-object-size.h b/gcc/tree-object-size.h
new file mode 100644
index 0000000000000000000000000000000000000000..19029d895621f2c2d8193a80d23f5b7153dd511b
--- /dev/null
+++ b/gcc/tree-object-size.h
@@ -0,0 +1,26 @@
+/* Declarations for tree-object-size.c.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_TREE_OBJECT_SIZE_H
+#define GCC_TREE_OBJECT_SIZE_H
+
+extern void init_object_sizes (void);
+extern unsigned HOST_WIDE_INT compute_builtin_object_size (tree, int);
+
+#endif  // GCC_TREE_OBJECT_SIZE_H
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c
index eb11c883fb4e309515a3a7c00ff138571d701d6b..333ef767418176299defaac0556b86f406e1e772 100644
--- a/gcc/tree-outof-ssa.c
+++ b/gcc/tree-outof-ssa.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "ggc.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -34,6 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "dumpfile.h"
 #include "diagnostic-core.h"
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 648331cc767a3b0b1dc76d52a485c2a4bc9aade3..b7370f73c461e33b3f04d38876adb82085de7be7 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -28,10 +28,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
 #include "gimple-walk.h"
+#include "stor-layout.h"
+#include "tree-nested.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
diff --git a/gcc/tree-phinodes.c b/gcc/tree-phinodes.c
index da7bf5be978d566a9999222149def1da796c3c63..dffad686fd1babc46024a2dafc12ef96f98ceaab 100644
--- a/gcc/tree-phinodes.c
+++ b/gcc/tree-phinodes.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa.h"
 #include "diagnostic-core.h"
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index a43d19b08a9f10fd0850527b0a383008109ea25a..830f82bc811086e95edd2b7568d07080c2ff6c6b 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -198,12 +198,14 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-ssa-loop.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "ggc.h"
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 93dc9c206101439df5030b31c45d680f2a6236e6..7ed48833fc33cc606e7428008c37d6f341b46cad 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -23,6 +23,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "expr.h"
 #include "tree-pretty-print.h"
 #include "hashtab.h"
 #include "gimple.h"
diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
index 132ce0d4d13957c9bf0b02d053d81b44cd7bcffb..fb4df90b769945c9a20d6d60581c0f1646fd8713 100644
--- a/gcc/tree-profile.c
+++ b/gcc/tree-profile.c
@@ -35,12 +35,15 @@ along with GCC; see the file COPYING3.  If not see
 #include "coverage.h"
 #include "tree.h"
 #include "gimple.h"
+#include "varasm.h"
+#include "tree-nested.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 115683de833654eb1db4aa999a54d396b7e7e8d7..e8b18f9df07b47083542ce3f49cc463aaf3b1c8b 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -257,6 +257,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "expr.h"
 #include "hash-table.h"
 #include "gimple-pretty-print.h"
 #include "gimple.h"
@@ -266,6 +267,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index b4b17882d2a9e602cd8b80a61ee1e7caccc04831..ea1986cae7e387e07051bb5f6417601cbe098feb 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -79,6 +79,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "tree.h"
 #include "gimple.h"
+#include "stor-layout.h"
 #include "gimplify.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
@@ -88,7 +89,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c
index cf245675796b66685212ed86e1c82b45ca61cf06..257d534a492153ac0b1e97766a0bbdf4c7d3e9e0 100644
--- a/gcc/tree-ssa-address.c
+++ b/gcc/tree-ssa-address.c
@@ -25,14 +25,17 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "dumpfile.h"
 #include "flags.h"
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index c1028fb760623a0b8cc380b714052d2a64f47b7a..ef9fbfecdc9173462f02b7572421bdd1dd3e1a36 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -35,7 +35,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "dumpfile.h"
 #include "gimple.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-inline.h"
 #include "params.h"
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 06da6a2ec3ed1c4c39d987659d87c4b62a3a25ae..d8ef822d4fba6b0d01b06327fa2ea95f406c45e0 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -114,6 +114,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "basic-block.h"
@@ -126,6 +127,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "tree-ssa-propagate.h"
diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c
index 942602e5fe3e0ae3559245447e525127582e07fb..cc46370d1f9f393d034e03b8f527cbd9e8d8d991 100644
--- a/gcc/tree-ssa-coalesce.c
+++ b/gcc/tree-ssa-coalesce.c
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "hash-table.h"
 #include "tree-ssa-live.h"
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 0f70372c80ef2809866fe1999ac73043925f5663..def780650e0029d9f4eee46897302929964e8626 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "tree-ssa-propagate.h"
diff --git a/gcc/tree-ssa-copyrename.c b/gcc/tree-ssa-copyrename.c
index d71802e7a1c488590669a75f94801adbbf1d2195..361b4c32fd79311c786ad0af51f994d849b3caf7 100644
--- a/gcc/tree-ssa-copyrename.c
+++ b/gcc/tree-ssa-copyrename.c
@@ -31,7 +31,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pretty-print.h"
 #include "bitmap.h"
 #include "gimple-ssa.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-inline.h"
 #include "hashtab.h"
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index d138f92f195c6a4236f7c37a057db0ea695c88f9..213bb51b3e2bda6bb19c596bcf5b32a37959bf2f 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 
 #include "tree.h"
+#include "calls.h"
 #include "gimple-pretty-print.h"
 #include "basic-block.h"
 #include "gimple.h"
@@ -57,9 +58,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-pass.h"
 #include "flags.h"
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index 0ce24df2abef6c21c0b1613b3d4a6e9a38cc6ce2..bfd865d09a7a4c0890b632c09f3a1b0e389ac5e3 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "hash-table.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "basic-block.h"
@@ -36,6 +37,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "domwalk.h"
diff --git a/gcc/tree-ssa-dse.c b/gcc/tree-ssa-dse.c
index 42e2380a0c8ca394712745196dcfc8b81a608c34..905ef21761c2e96df8a592d555b907f0059da23a 100644
--- a/gcc/tree-ssa-dse.c
+++ b/gcc/tree-ssa-dse.c
@@ -33,7 +33,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-pass.h"
 #include "domwalk.h"
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 817fa9f461451ef2adef7d47618287a550d22c8b..a826137aabdc482d1125621941b56998f54f0980 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -33,7 +34,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-pass.h"
 #include "langhooks.h"
diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c
index 8ce4871e025d0af42ae7dcf519d7a1ebb082c63c..9d24375366690f40b56ddde3cc7d9c3d28e0529c 100644
--- a/gcc/tree-ssa-ifcombine.c
+++ b/gcc/tree-ssa-ifcombine.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "tm_p.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
 #include "gimple.h"
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index 1657f6f6ca5135707426f6ea030306c6c4f94ab4..5dc8d025f663f545adf22e7cd59419d3ec07dec8 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -32,7 +32,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "timevar.h"
 #include "dumpfile.h"
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 7f29ea2053c064c0d113fa52678b1d2dae45c5cb..79a0543a40f0c2fc44335de4c1ebe261c0a2b7bf 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -33,6 +33,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop.h"
diff --git a/gcc/tree-ssa-loop-ivcanon.c b/gcc/tree-ssa-loop-ivcanon.c
index 97b95ab2d319e9559fbdd0a1f598592209f8c32c..ea0ab8ca80b499f450169dea1491791f895998a8 100644
--- a/gcc/tree-ssa-loop-ivcanon.c
+++ b/gcc/tree-ssa-loop-ivcanon.c
@@ -47,6 +47,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index f53fa2286f2edf5b9618c117c6152cd222a4ff5e..9bf12ebdc8ee1237698a19e5719eeccf608c5467 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -66,6 +66,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -78,11 +79,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-ssa-loop.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "cfgloop.h"
diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c
index 31db43a2c050019777c102bba27ccbd1d6435925..fe2686d3037f4cb93e792d0107eff0175603883e 100644
--- a/gcc/tree-ssa-loop-manip.c
+++ b/gcc/tree-ssa-loop-manip.c
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 97cad3de977b6c923b09bd4c1dc0c6ec0e03ed1b..023f2a833561c261b1da0a767102a430271d3733 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "calls.h"
+#include "expr.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -47,6 +49,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "diagnostic-core.h"
 #include "tree-inline.h"
 #include "tree-pass.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 
 
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c
index 3738f62fa09a343b3379699a2c803e3d81382ce1..6baf4abd3191e94c4f04c45da5f5b8de2237a424 100644
--- a/gcc/tree-ssa-loop-prefetch.c
+++ b/gcc/tree-ssa-loop-prefetch.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "tree-pretty-print.h"
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index 0c5dbb17aa5fba437e397ce1f3ab137d83665a8e..67117bcc3f698eee431c50357691c0fa8d88dc6d 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -93,11 +93,14 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimplify-me.h"
+#include "stor-layout.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-ssa-operands.c b/gcc/tree-ssa-operands.c
index 4e05d2df0467cec39da93b6c07cf945ba662f465..3508b34b77a8fae20c15aebee7bbd494dce8a4a4 100644
--- a/gcc/tree-ssa-operands.c
+++ b/gcc/tree-ssa-operands.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stmt.h"
+#include "print-tree.h"
 #include "flags.h"
 #include "function.h"
 #include "gimple-pretty-print.h"
@@ -30,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-inline.h"
 #include "timevar.h"
diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
index a0d739881d61345fcd1617787104e88e9673976d..54a981935fdd1239ded0d38d5867fe72ad0e7861 100644
--- a/gcc/tree-ssa-phiopt.c
+++ b/gcc/tree-ssa-phiopt.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "basic-block.h"
@@ -35,7 +36,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-pass.h"
 #include "langhooks.h"
diff --git a/gcc/tree-ssa-phiprop.c b/gcc/tree-ssa-phiprop.c
index 070b8ed3f0bf773dd8c126d04be9a5b2d6f25106..e76404094252e092aa4c21ec0dfd2d1e9d4ed2a7 100644
--- a/gcc/tree-ssa-phiprop.c
+++ b/gcc/tree-ssa-phiprop.c
@@ -32,6 +32,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "langhooks.h"
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 6ab1b10d330f9f6fb2f8c43348c9c60359247b6b..b16fd1704d1e073dc7312dc9162b332d6e196e2b 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -35,9 +35,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "hash-table.h"
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index 078b04afdbce7da5b6e2c466a5ccc6a44b31f209..bd33071303b1ec67eb329c1e85baffce3332cdb1 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -37,6 +37,7 @@
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa.h"
 #include "tree-ssa-propagate.h"
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 709b1c1ba635643489319c97cc891305fb8637d8..eedccc6654b9e18bb886dca37b6e5acbee782ecb 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "rtl.h"
 #include "tm_p.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
@@ -36,9 +37,11 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-niter.h"
 #include "tree-ssa-loop.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "tree-iterator.h"
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 786cfaa0988c3e072e6e9961129c08e95f30953a..2b2d0e9b997b345ba7920c8645858f42ac2525d4 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
@@ -31,7 +32,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-ssa.h"
 #include "dumpfile.h"
diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c
index caf10bb522fc3e55a5f8b5ecf4bdbd7771e579c2..f0c831d113bbd9034fbdefdcbc2f55a820793cda 100644
--- a/gcc/tree-ssa-sink.c
+++ b/gcc/tree-ssa-sink.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "tree-inline.h"
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index 04e9ef4a0e2b0fbe8b34da3da681a9a2ff3b0ce3..514b1b829e26c152f8bddef5737897167eeb5d73 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "hash-table.h"
 #include "bitmap.h"
 #include "gimple.h"
@@ -31,7 +32,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-pass.h"
 #include "domwalk.h"
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index f1172e7f7c9cf70c35e21836bcb79da8dabc60b8..688f547d03ad9379d48428cb06609d0a264783b2 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -29,12 +29,16 @@
 #include "flags.h"
 #include "basic-block.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stmt.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
 #include "gimple-ssa.h"
 #include "cgraph.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "tree-inline.h"
 #include "diagnostic-core.h"
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index 79be216569346123cdc68229e0e17eecaa626ff4..35b8bbe049786666359f2744d251652724124d1f 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -190,6 +190,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "trans-mem.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "flags.h"
diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c
index df0c458e0195eb6d277b54dfbbadade6e7ad20e6..883f950c11a8683b3786134b584f6e470c2e7713 100644
--- a/gcc/tree-ssa-ter.c
+++ b/gcc/tree-ssa-ter.c
@@ -31,6 +31,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "dumpfile.h"
 #include "tree-ssa-live.h"
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index cabfc824c628540c55154bc4cc9399f21eb8a213..b90ff23af5da30d43fb381f4f93358501675bb3e 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-propagate.h"
 #include "tree-ssa-threadupdate.h"
diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c
index e4b39986363505d717207dc7e7f9489d9dd01691..62ffe421f2978dfba2a846bb62e4cc3dd984e9c2 100644
--- a/gcc/tree-ssa-uncprop.c
+++ b/gcc/tree-ssa-uncprop.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "basic-block.h"
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index d2552361a66ed401e0bc4c39152c131f33334a75..1b4a383062b8ca3cf86374fd156c37cad8ea68ea 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "flags.h"
 #include "tm_p.h"
 #include "target.h"
@@ -38,6 +39,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-into-ssa.h"
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 763589125695ce9f4402e58aa41162e9c3d08f97..9d88b4cf576260455d57f59882554283533eee32 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -22,10 +22,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "gimple.h"
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
 #include "tree-ssa.h"
diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c
index 5cd845c0d527b6085892485be8accf38c5508569..221e7d705e03d69467516b0955c08f3a03d8c9e6 100644
--- a/gcc/tree-stdarg.c
+++ b/gcc/tree-stdarg.c
@@ -34,6 +34,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "sbitmap.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-streamer-in.c b/gcc/tree-streamer-in.c
index 92598e39941eb6a51adfd905a8bf321f83c59e56..560d4f8f4f7559cc456721a09e0abd4bca1c0c9c 100644
--- a/gcc/tree-streamer-in.c
+++ b/gcc/tree-streamer-in.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "diagnostic.h"
 #include "tree.h"
+#include "stringpool.h"
 #include "gimple.h"
 #include "tree-streamer.h"
 #include "data-streamer.h"
diff --git a/gcc/tree-streamer-out.c b/gcc/tree-streamer-out.c
index ea1a0546516d1023821b018ed9a7e8a53887daa1..275c22cd7aa3c6e85fd0d059d86e57afba79c67f 100644
--- a/gcc/tree-streamer-out.c
+++ b/gcc/tree-streamer-out.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "diagnostic.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "gimple.h"
 #include "tree-streamer.h"
 #include "data-streamer.h"
diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c
index fa31e22d525d43df2b1cf834169d4a01e8abf226..494d48e5c46e7ddd79377bb9f6ae5bb8a69291be 100644
--- a/gcc/tree-switch-conversion.c
+++ b/gcc/tree-switch-conversion.c
@@ -30,6 +30,8 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 #include "params.h"
 #include "flags.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "gimple.h"
 #include "gimplify.h"
@@ -39,6 +41,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
 #include "cgraph.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "gimple-pretty-print.h"
diff --git a/gcc/tree-tailcall.c b/gcc/tree-tailcall.c
index 185bf165149e9ab4743af09a9c45cb9121278ad6..33677ce1277114e26a2f4faac50561301ba4ec46 100644
--- a/gcc/tree-tailcall.c
+++ b/gcc/tree-tailcall.c
@@ -22,6 +22,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "basic-block.h"
 #include "function.h"
@@ -31,8 +32,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-into-ssa.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "gimple-pretty-print.h"
 #include "except.h"
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 83d1f4546bdbfd09aca6bee636c6913217bba6a1..259a284612926d01ca64ac3a46b734e1776a8714 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm_p.h"
 #include "target.h"
 #include "basic-block.h"
@@ -37,6 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index 9fcab5d2a832b74791e3e44c0f2d24f16240e544..735689b4c18b2ab31bddce068875db06acf4d8f2 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tm.h"
 #include "langhooks.h"
 #include "gimple.h"
@@ -28,6 +29,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimplify-me.h"
 #include "gimple-ssa.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-iterator.h"
 #include "tree-pass.h"
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index 411adb9afca02904db633c11842f120ea32b4c01..5c149951b846eb51f00cf20603ac8eb5b0a0ce34 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-into-ssa.h"
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 86ebbd226a7b3a03e7817bd4c5bd900fd79094cd..4a277ae419ae0fb6c484e2dda1532633fbc4be2b 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
 #include "gimple.h"
@@ -35,6 +36,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-ivopts.h"
 #include "tree-ssa-loop-manip.h"
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 0992fbc9c7358882ebc00086b47fb1637cbe71be..de854e1a4431ff7d2458bf57c7348ff6ee31101e 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -24,6 +24,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -33,6 +34,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "cfgloop.h"
 #include "expr.h"
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 247bdfd6669ace9050d9f69bf32e28048cc3a001..bd9e4e23e0deea8cbdea4f19b687b309a7841d02 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -34,6 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "cfgloop.h"
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 54d821af9c0fe492d3a2ca152142273f5b0b4252..2116cec3cf9d8135ce23a430d409b9cd50d47fe6 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "target.h"
 #include "basic-block.h"
 #include "gimple-pretty-print.h"
@@ -37,6 +38,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "cfgloop.h"
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 9c2cf5d1ce213553605f20668b8f9fe692a6be31..5021c5b48cc2a97b5b32f764a09dafe2e8299ab0 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -61,6 +61,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "ggc.h"
 #include "tree.h"
+#include "stor-layout.h"
 #include "tree-pretty-print.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 696cadba767175a58ff5410cfaa93da1d97d2a1e..d250186a40b3f61edeba7a8f7b7da6ea256aeda9 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -25,6 +25,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "ggc.h"
 #include "flags.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
 #include "basic-block.h"
 #include "gimple.h"
 #include "gimple-iterator.h"
@@ -33,6 +35,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-ssa-loop-manip.h"
 #include "tree-ssa-loop-niter.h"
diff --git a/gcc/tree.c b/gcc/tree.c
index ea106cee37561479ce43e15d1c0bb1ba51134e68..25aa3e2a35694a8115af984d8044c3b2b8e5b77e 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -33,6 +33,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "flags.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "calls.h"
+#include "attribs.h"
+#include "varasm.h"
 #include "tm_p.h"
 #include "function.h"
 #include "obstack.h"
@@ -54,7 +58,9 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-phinodes.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
+#include "expr.h"
 #include "tree-dfa.h"
 #include "params.h"
 #include "pointer-set.h"
diff --git a/gcc/tree.h b/gcc/tree.h
index f63672c0897c9a8cf81c1dad509fadd2a6fd522b..c485c3f8a8860be873a8a455efe3798f27592cdf 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -22,6 +22,12 @@ along with GCC; see the file COPYING3.  If not see
 
 #include "tree-core.h"
 
+/* These includes are required here because they provide declarations
+   used by inline functions in this file.
+
+   FIXME - Move these users elsewhere? */
+#include "fold-const.h"
+
 /* Macros for initializing `tree_contains_struct'.  */
 #define MARK_TS_BASE(C)					\
   do {							\
@@ -568,7 +574,6 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
 #define COMPLETE_OR_UNBOUND_ARRAY_TYPE_P(NODE) \
   (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE)))
 
-
 /* Define many boolean fields that all tree nodes have.  */
 
 /* In VAR_DECL, PARM_DECL and RESULT_DECL nodes, nonzero means address
@@ -882,7 +887,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int,
   (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_5)
 #define TREE_LANG_FLAG_6(NODE) \
   (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_6)
-
+
 /* Define additional fields and accessors for nodes representing constants.  */
 
 /* In an INTEGER_CST node.  These two together make a 2-word integer.
@@ -1519,8 +1524,6 @@ extern void protected_set_expr_location (tree, location_t);
 #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.main_variant)
 #define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type_common.context)
 
-/* Vector types need to check target flags to determine type.  */
-extern enum machine_mode vector_type_mode (const_tree);
 #define TYPE_MODE(NODE) \
   (VECTOR_TYPE_P (TYPE_CHECK (NODE)) \
    ? vector_type_mode (NODE) : (NODE)->type_common.mode)
@@ -2692,8 +2695,6 @@ extern vec<tree, va_gc> **decl_debug_args_insert (tree);
 /* Return a tree node that encapsulates the optimization options in OPTS.  */
 extern tree build_optimization_node (struct gcc_options *opts);
 
-extern void init_tree_optimization_optabs (tree);
-
 #define TREE_TARGET_OPTION(NODE) \
   (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
 
@@ -3438,30 +3439,6 @@ extern tree make_tree_vec_stat (int MEM_STAT_DECL);
 extern tree grow_tree_vec_stat (tree v, int MEM_STAT_DECL);
 #define grow_tree_vec(v, t) grow_tree_vec_stat (v, t MEM_STAT_INFO)
 
-/* Return the (unique) IDENTIFIER_NODE node for a given name.
-   The name is supplied as a char *.  */
-
-extern tree get_identifier (const char *);
-
-#if GCC_VERSION >= 3000
-#define get_identifier(str) \
-  (__builtin_constant_p (str)				\
-    ? get_identifier_with_length ((str), strlen (str))  \
-    : get_identifier (str))
-#endif
-
-
-/* Identical to get_identifier, except that the length is assumed
-   known.  */
-
-extern tree get_identifier_with_length (const char *, size_t);
-
-/* If an identifier with the name TEXT (a null-terminated string) has
-   previously been referred to, return that node; otherwise return
-   NULL_TREE.  */
-
-extern tree maybe_get_identifier (const char *);
-
 /* Construct various types of nodes.  */
 
 extern tree build_nt (enum tree_code, ...);
@@ -3612,14 +3589,10 @@ extern tree build_call_vec (tree, tree, vec<tree, va_gc> *);
 
 /* Construct various nodes representing data types.  */
 
-extern tree make_signed_type (int);
-extern tree make_unsigned_type (int);
 extern tree signed_or_unsigned_type_for (int, tree);
 extern tree signed_type_for (tree);
 extern tree unsigned_type_for (tree);
 extern tree truth_type_for (tree);
-extern void initialize_sizetypes (void);
-extern void fixup_unsigned_type (tree);
 extern tree build_pointer_type_for_mode (tree, enum machine_mode, bool);
 extern tree build_pointer_type (tree);
 extern tree build_reference_type_for_mode (tree, enum machine_mode, bool);
@@ -3687,51 +3660,17 @@ tree_to_uhwi (const_tree t)
 extern int tree_int_cst_sgn (const_tree);
 extern int tree_int_cst_sign_bit (const_tree);
 extern unsigned int tree_int_cst_min_precision (tree, bool);
-extern bool tree_expr_nonnegative_p (tree);
-extern bool tree_expr_nonnegative_warnv_p (tree, bool *);
-extern bool may_negate_without_overflow_p (const_tree);
 extern tree strip_array_types (tree);
 extern tree excess_precision_type (tree);
 extern bool valid_constant_size_p (const_tree);
-extern unsigned int element_precision (const_tree);
-
-/* Construct various nodes representing fract or accum data types.  */
-
-extern tree make_fract_type (int, int, int);
-extern tree make_accum_type (int, int, int);
-
-#define make_signed_fract_type(P) make_fract_type (P, 0, 0)
-#define make_unsigned_fract_type(P) make_fract_type (P, 1, 0)
-#define make_sat_signed_fract_type(P) make_fract_type (P, 0, 1)
-#define make_sat_unsigned_fract_type(P) make_fract_type (P, 1, 1)
-#define make_signed_accum_type(P) make_accum_type (P, 0, 0)
-#define make_unsigned_accum_type(P) make_accum_type (P, 1, 0)
-#define make_sat_signed_accum_type(P) make_accum_type (P, 0, 1)
-#define make_sat_unsigned_accum_type(P) make_accum_type (P, 1, 1)
-
-#define make_or_reuse_signed_fract_type(P) \
-		make_or_reuse_fract_type (P, 0, 0)
-#define make_or_reuse_unsigned_fract_type(P) \
-		make_or_reuse_fract_type (P, 1, 0)
-#define make_or_reuse_sat_signed_fract_type(P) \
-		make_or_reuse_fract_type (P, 0, 1)
-#define make_or_reuse_sat_unsigned_fract_type(P) \
-		make_or_reuse_fract_type (P, 1, 1)
-#define make_or_reuse_signed_accum_type(P) \
-		make_or_reuse_accum_type (P, 0, 0)
-#define make_or_reuse_unsigned_accum_type(P) \
-		make_or_reuse_accum_type (P, 1, 0)
-#define make_or_reuse_sat_signed_accum_type(P) \
-		make_or_reuse_accum_type (P, 0, 1)
-#define make_or_reuse_sat_unsigned_accum_type(P) \
-		make_or_reuse_accum_type (P, 1, 1)
+
 
 /* From expmed.c.  Since rtl.h is included after tree.h, we can't
    put the prototype here.  Rtl.h does declare the prototype if
    tree.h had been included.  */
 
 extern tree make_tree (tree, rtx);
-
+
 /* Return a type like TTYPE except that its TYPE_ATTRIBUTES
    is ATTRIBUTE.
 
@@ -3850,30 +3789,6 @@ extern tree build_aligned_type (tree, unsigned int);
 extern tree build_distinct_type_copy (tree);
 extern tree build_variant_type_copy (tree);
 
-/* Finish up a builtin RECORD_TYPE. Give it a name and provide its
-   fields. Optionally specify an alignment, and then lay it out.  */
-
-extern void finish_builtin_struct (tree, const char *,
-							 tree, tree);
-
-/* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
-   TYPE_ALIGN and TYPE_MODE fields.  If called more than once on one
-   node, does nothing except for the first time.  */
-
-extern void layout_type (tree);
-
-extern record_layout_info start_record_layout (tree);
-extern tree bit_from_pos (tree, tree);
-extern tree byte_from_pos (tree, tree);
-extern void pos_from_bit (tree *, tree *, unsigned int, tree);
-extern void normalize_offset (tree *, tree *, unsigned int);
-extern tree rli_size_unit_so_far (record_layout_info);
-extern tree rli_size_so_far (record_layout_info);
-extern void normalize_rli (record_layout_info);
-extern void place_field (record_layout_info, tree);
-extern void compute_record_mode (tree);
-extern void finish_record_layout (record_layout_info, int);
-
 /* Given a hashcode and a ..._TYPE node (for which the hashcode was made),
    return a canonicalized ..._TYPE node, so that duplicates are not made.
    How the hash code is computed is up to the caller, as long as any two
@@ -3881,37 +3796,8 @@ extern void finish_record_layout (record_layout_info, int);
 
 extern tree type_hash_canon (unsigned int, tree);
 
-/* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
-   calculates the DECL_SIZE, DECL_SIZE_UNIT, DECL_ALIGN and DECL_MODE
-   fields.  Call this only once for any given decl node.
-
-   Second argument is the boundary that this field can be assumed to
-   be starting at (in bits).  Zero means it can be assumed aligned
-   on any boundary that may be needed.  */
-
-extern void layout_decl (tree, unsigned);
-
-/* Given a VAR_DECL, PARM_DECL or RESULT_DECL, clears the results of
-   a previous call to layout_decl and calls it again.  */
-
-extern void relayout_decl (tree);
-
-/* Return the mode for data of a given size SIZE and mode class CLASS.
-   If LIMIT is nonzero, then don't use modes bigger than MAX_FIXED_MODE_SIZE.
-   The value is BLKmode if no other mode is found.  This is like
-   mode_for_size, but is passed a tree.  */
-
-extern enum machine_mode mode_for_size_tree (const_tree, enum mode_class, int);
-
-/* Return an expr equal to X but certainly not valid as an lvalue.  */
-
-#define non_lvalue(T) non_lvalue_loc (UNKNOWN_LOCATION, T)
-extern tree non_lvalue_loc (location_t, tree);
-
 extern tree convert (tree, tree);
 extern unsigned int expr_align (const_tree);
-extern tree expr_first (tree);
-extern tree expr_last (tree);
 extern tree size_in_bytes (const_tree);
 extern HOST_WIDE_INT int_size_in_bytes (const_tree);
 extern HOST_WIDE_INT max_int_size_in_bytes (const_tree);
@@ -3924,26 +3810,11 @@ extern HOST_WIDE_INT int_byte_position (const_tree);
 #define bitsizetype sizetype_tab[(int) stk_bitsizetype]
 #define ssizetype sizetype_tab[(int) stk_ssizetype]
 #define sbitsizetype sizetype_tab[(int) stk_sbitsizetype]
-
-extern tree size_int_kind (HOST_WIDE_INT, enum size_type_kind);
-#define size_binop(CODE,T1,T2)\
-   size_binop_loc (UNKNOWN_LOCATION, CODE, T1, T2)
-extern tree size_binop_loc (location_t, enum tree_code, tree, tree);
-#define size_diffop(T1,T2)\
-   size_diffop_loc (UNKNOWN_LOCATION, T1, T2)
-extern tree size_diffop_loc (location_t, tree, tree);
-
 #define size_int(L) size_int_kind (L, stk_sizetype)
 #define ssize_int(L) size_int_kind (L, stk_ssizetype)
 #define bitsize_int(L) size_int_kind (L, stk_bitsizetype)
 #define sbitsize_int(L) size_int_kind (L, stk_sbitsizetype)
 
-#define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N)
-extern tree round_up_loc (location_t, tree, int);
-#define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N)
-extern tree round_down_loc (location_t, tree, int);
-extern void finalize_size_functions (void);
-
 /* Type for sizes of data-type.  */
 
 #define BITS_PER_UNIT_LOG \
@@ -3993,11 +3864,6 @@ extern tree uniform_vector_p (const_tree);
 
 extern vec<tree, va_gc> *ctor_to_vec (tree);
 
-extern bool categorize_ctor_elements (const_tree, HOST_WIDE_INT *,
-				      HOST_WIDE_INT *, bool *);
-
-extern bool complete_ctor_at_level_p (const_tree, HOST_WIDE_INT, const_tree);
-
 /* integer_zerop (tree x) is nonzero if X is an integer constant of value 0.  */
 
 extern int integer_zerop (const_tree);
@@ -4121,13 +3987,6 @@ extern tree substitute_placeholder_in_expr (tree, tree);
   ((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP)	\
    : substitute_placeholder_in_expr (EXP, OBJ))
 
-/* variable_size (EXP) is like save_expr (EXP) except that it
-   is for the special case of something that is part of a
-   variable size for a data type.  It makes special arrangements
-   to compute the value at the right time when the data type
-   belongs to a function parameter.  */
-
-extern tree variable_size (tree);
 
 /* stabilize_reference (EXP) returns a reference equivalent to EXP
    but it can be used multiple times
@@ -4170,36 +4029,6 @@ handled_component_p (const_tree t)
     }
 }
 
-/* Given an expression EXP that is a handled_component_p,
-   look for the ultimate containing object, which is returned and specify
-   the access position and size.  */
-
-extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
-				 tree *, enum machine_mode *, int *, int *,
-				 bool);
-
-/* Return a tree of sizetype representing the size, in bytes, of the element
-   of EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
-
-extern tree array_ref_element_size (tree);
-
-bool array_at_struct_end_p (tree);
-
-/* Return a tree representing the lower bound of the array mentioned in
-   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
-
-extern tree array_ref_low_bound (tree);
-
-/* Return a tree representing the upper bound of the array mentioned in
-   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
-
-extern tree array_ref_up_bound (tree);
-
-/* Return a tree representing the offset, in bytes, of the field referenced
-   by EXP.  This does not include any offset in DECL_FIELD_BIT_OFFSET.  */
-
-extern tree component_ref_field_offset (tree);
-
 /* Given a DECL or TYPE, return the scope in which it was declared, or
    NUL_TREE if there is no containing scope.  */
 
@@ -4274,8 +4103,6 @@ inlined_function_outer_scope_p (const_tree block)
        (TREE = function_args_iter_cond (&(ITER))) != NULL_TREE;		\
        function_args_iter_next (&(ITER)))
 
-
-
 /* In tree.c */
 extern unsigned crc32_string (unsigned, const char *);
 extern unsigned crc32_byte (unsigned, char);
@@ -4306,14 +4133,6 @@ extern void assign_assembler_name_if_neeeded (tree);
 extern void warn_deprecated_use (tree, tree);
 extern void cache_integer_cst (tree);
 
-
-/* In cgraph.c */
-extern void change_decl_assembler_name (tree, tree);
-
-/* In stmt.c */
-
-extern void expand_label (tree);
-
 /* Compare and hash for any structure which begins with a canonical
    pointer.  Assumes all pointers are interchangeable, which is sort
    of already assumed by gcc elsewhere IIRC.  */
@@ -4333,132 +4152,6 @@ struct_ptr_hash (const void *a)
   return (intptr_t)*x >> 4;
 }
 
-/* In fold-const.c */
-
-/* Non-zero if we are folding constants inside an initializer; zero
-   otherwise.  */
-extern int folding_initializer;
-
-/* Convert between trees and native memory representation.  */
-extern int native_encode_expr (const_tree, unsigned char *, int);
-extern tree native_interpret_expr (tree, const unsigned char *, int);
-
-/* Fold constants as much as possible in an expression.
-   Returns the simplified expression.
-   Acts only on the top level of the expression;
-   if the argument itself cannot be simplified, its
-   subexpressions are not changed.  */
-
-extern tree fold (tree);
-#define fold_unary(CODE,T1,T2)\
-   fold_unary_loc (UNKNOWN_LOCATION, CODE, T1, T2)
-extern tree fold_unary_loc (location_t, enum tree_code, tree, tree);
-#define fold_unary_ignore_overflow(CODE,T1,T2)\
-   fold_unary_ignore_overflow_loc (UNKNOWN_LOCATION, CODE, T1, T2)
-extern tree fold_unary_ignore_overflow_loc (location_t, enum tree_code, tree, tree);
-#define fold_binary(CODE,T1,T2,T3)\
-   fold_binary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3)
-extern tree fold_binary_loc (location_t, enum tree_code, tree, tree, tree);
-#define fold_ternary(CODE,T1,T2,T3,T4)\
-   fold_ternary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3, T4)
-extern tree fold_ternary_loc (location_t, enum tree_code, tree, tree, tree, tree);
-#define fold_build1(c,t1,t2)\
-   fold_build1_stat_loc (UNKNOWN_LOCATION, c, t1, t2 MEM_STAT_INFO)
-#define fold_build1_loc(l,c,t1,t2)\
-   fold_build1_stat_loc (l, c, t1, t2 MEM_STAT_INFO)
-extern tree fold_build1_stat_loc (location_t, enum tree_code, tree,
-				  tree MEM_STAT_DECL);
-#define fold_build2(c,t1,t2,t3)\
-   fold_build2_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3 MEM_STAT_INFO)
-#define fold_build2_loc(l,c,t1,t2,t3)\
-   fold_build2_stat_loc (l, c, t1, t2, t3 MEM_STAT_INFO)
-extern tree fold_build2_stat_loc (location_t, enum tree_code, tree, tree,
-				  tree MEM_STAT_DECL);
-#define fold_build3(c,t1,t2,t3,t4)\
-   fold_build3_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3, t4 MEM_STAT_INFO)
-#define fold_build3_loc(l,c,t1,t2,t3,t4)\
-   fold_build3_stat_loc (l, c, t1, t2, t3, t4 MEM_STAT_INFO)
-extern tree fold_build3_stat_loc (location_t, enum tree_code, tree, tree, tree,
-				  tree MEM_STAT_DECL);
-extern tree fold_build1_initializer_loc (location_t, enum tree_code, tree, tree);
-extern tree fold_build2_initializer_loc (location_t, enum tree_code, tree, tree, tree);
-#define fold_build_call_array(T1,T2,N,T4)\
-   fold_build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
-extern tree fold_build_call_array_loc (location_t, tree, tree, int, tree *);
-#define fold_build_call_array_initializer(T1,T2,N,T4)\
-   fold_build_call_array_initializer_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
-extern tree fold_build_call_array_initializer_loc (location_t, tree, tree, int, tree *);
-extern bool fold_convertible_p (const_tree, const_tree);
-#define fold_convert(T1,T2)\
-   fold_convert_loc (UNKNOWN_LOCATION, T1, T2)
-extern tree fold_convert_loc (location_t, tree, tree);
-extern tree fold_single_bit_test (location_t, enum tree_code, tree, tree, tree);
-extern tree fold_ignored_result (tree);
-extern tree fold_abs_const (tree, tree);
-extern tree fold_indirect_ref_1 (location_t, tree, tree);
-extern void fold_defer_overflow_warnings (void);
-extern void fold_undefer_overflow_warnings (bool, const_gimple, int);
-extern void fold_undefer_and_ignore_overflow_warnings (void);
-extern bool fold_deferring_overflow_warnings_p (void);
-extern tree fold_fma (location_t, tree, tree, tree, tree);
-extern int operand_equal_p (const_tree, const_tree, unsigned int);
-extern int multiple_of_p (tree, const_tree, const_tree);
-#define omit_one_operand(T1,T2,T3)\
-   omit_one_operand_loc (UNKNOWN_LOCATION, T1, T2, T3)
-extern tree omit_one_operand_loc (location_t, tree, tree, tree);
-#define omit_two_operands(T1,T2,T3,T4)\
-   omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4)
-extern tree omit_two_operands_loc (location_t, tree, tree, tree, tree);
-#define invert_truthvalue(T)\
-   invert_truthvalue_loc (UNKNOWN_LOCATION, T)
-extern tree invert_truthvalue_loc (location_t, tree);
-extern tree fold_unary_to_constant (enum tree_code, tree, tree);
-extern tree fold_binary_to_constant (enum tree_code, tree, tree, tree);
-extern tree fold_read_from_constant_string (tree);
-extern tree int_const_binop (enum tree_code, const_tree, const_tree);
-#define build_fold_addr_expr(T)\
-        build_fold_addr_expr_loc (UNKNOWN_LOCATION, (T))
-extern tree build_fold_addr_expr_loc (location_t, tree);
-#define build_fold_addr_expr_with_type(T,TYPE)\
-        build_fold_addr_expr_with_type_loc (UNKNOWN_LOCATION, (T), TYPE)
-extern tree build_fold_addr_expr_with_type_loc (location_t, tree, tree);
-extern tree fold_build_cleanup_point_expr (tree type, tree expr);
-extern tree fold_strip_sign_ops (tree);
-#define build_fold_indirect_ref(T)\
-        build_fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
-extern tree build_fold_indirect_ref_loc (location_t, tree);
-#define fold_indirect_ref(T)\
-        fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
-extern tree fold_indirect_ref_loc (location_t, tree);
-extern tree build_simple_mem_ref_loc (location_t, tree);
-#define build_simple_mem_ref(T)\
-	build_simple_mem_ref_loc (UNKNOWN_LOCATION, T)
-extern double_int mem_ref_offset (const_tree);
-extern tree build_invariant_address (tree, tree, HOST_WIDE_INT);
-extern tree constant_boolean_node (bool, tree);
-extern tree div_if_zero_remainder (enum tree_code, const_tree, const_tree);
-
-extern bool tree_swap_operands_p (const_tree, const_tree, bool);
-extern enum tree_code swap_tree_comparison (enum tree_code);
-
-extern bool ptr_difference_const (tree, tree, HOST_WIDE_INT *);
-extern enum tree_code invert_tree_comparison (enum tree_code, bool);
-
-extern bool tree_unary_nonzero_warnv_p (enum tree_code, tree, tree, bool *);
-extern bool tree_binary_nonzero_warnv_p (enum tree_code, tree, tree, tree op1,
-                                         bool *);
-extern bool tree_single_nonzero_warnv_p (tree, bool *);
-extern bool tree_unary_nonnegative_warnv_p (enum tree_code, tree, tree, bool *);
-extern bool tree_binary_nonnegative_warnv_p (enum tree_code, tree, tree, tree,
-                                             bool *);
-extern bool tree_single_nonnegative_warnv_p (tree t, bool *strict_overflow_p);
-extern bool tree_call_nonnegative_warnv_p (tree, tree, tree, tree, bool *);
-
-extern bool fold_real_zero_addition_p (const_tree, const_tree, int);
-extern tree combine_comparisons (location_t, enum tree_code, enum tree_code,
-				 enum tree_code, tree, tree, tree);
-extern void debug_fold_checksum (const_tree);
-
 /* Return nonzero if CODE is a tree code that represents a truth value.  */
 static inline bool
 truth_value_p (enum tree_code code)
@@ -4508,56 +4201,7 @@ fold_build_pointer_plus_hwi_loc (location_t loc, tree ptr, HOST_WIDE_INT off)
 #define fold_build_pointer_plus_hwi(p,o) \
 	fold_build_pointer_plus_hwi_loc (UNKNOWN_LOCATION, p, o)
 
-/* In builtins.c */
-
-/* Non-zero if __builtin_constant_p should be folded right away.  */
-extern bool force_folding_builtin_constant_p;
-
-extern bool avoid_folding_inline_builtin (tree);
-extern tree fold_call_expr (location_t, tree, bool);
-extern tree fold_builtin_fputs (location_t, tree, tree, bool, bool, tree);
-extern tree fold_builtin_strcpy (location_t, tree, tree, tree, tree);
-extern tree fold_builtin_strncpy (location_t, tree, tree, tree, tree, tree);
-extern tree fold_builtin_memory_chk (location_t, tree, tree, tree, tree, tree, tree, bool,
-				     enum built_in_function);
-extern tree fold_builtin_stxcpy_chk (location_t, tree, tree, tree, tree, tree, bool,
-				     enum built_in_function);
-extern tree fold_builtin_stxncpy_chk (location_t, tree, tree, tree, tree, tree, bool,
-				      enum built_in_function);
-extern bool fold_builtin_next_arg (tree, bool);
-extern enum built_in_function builtin_mathfn_code (const_tree);
-extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
-extern tree build_call_expr_loc_array (location_t, tree, int, tree *);
-extern tree build_call_expr_loc_vec (location_t, tree, vec<tree, va_gc> *);
-extern tree build_call_expr_loc (location_t, tree, int, ...);
-extern tree build_call_expr (tree, int, ...);
-extern tree mathfn_built_in (tree, enum built_in_function fn);
-extern tree c_strlen (tree, int);
-extern tree build_string_literal (int, const char *);
-extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, enum machine_mode);
-extern bool is_builtin_fn (tree);
-extern bool get_object_alignment_1 (tree, unsigned int *,
-				    unsigned HOST_WIDE_INT *);
-extern unsigned int get_object_alignment (tree);
-extern bool get_pointer_alignment_1 (tree, unsigned int *,
-				     unsigned HOST_WIDE_INT *);
-extern unsigned int get_pointer_alignment (tree);
-extern tree fold_call_stmt (gimple, bool);
-extern tree gimple_fold_builtin_snprintf_chk (gimple, tree, enum built_in_function);
-extern tree make_range (tree, int *, tree *, tree *, bool *);
-extern tree make_range_step (location_t, enum tree_code, tree, tree, tree,
-			     tree *, tree *, int *, bool *);
-extern tree build_range_check (location_t, tree, tree, int, tree, tree);
-extern bool merge_ranges (int *, tree *, tree *, int, tree, tree, int,
-			  tree, tree);
-extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
-extern bool is_simple_builtin (tree);
-extern bool is_inexpensive_builtin (tree);
-
-/* In convert.c */
 extern tree strip_float_extensions (tree);
-
-/* In tree.c */
 extern int really_constant_p (const_tree);
 extern bool decl_address_invariant_p (const_tree);
 extern bool decl_address_ip_invariant_p (const_tree);
@@ -4581,7 +4225,6 @@ extern void dump_tree_statistics (void);
 extern void recompute_tree_invariant_for_addr_expr (tree);
 extern bool needs_to_live_in_memory (const_tree);
 extern tree reconstruct_complex_type (tree, tree);
-
 extern int real_onep (const_tree);
 extern int real_minus_onep (const_tree);
 extern void init_ttree (void);
@@ -4593,14 +4236,11 @@ extern tree build_nonshared_range_type (tree, tree, tree);
 extern bool subrange_type_for_debug_p (const_tree, tree *, tree *);
 extern HOST_WIDE_INT int_cst_value (const_tree);
 extern HOST_WIDEST_INT widest_int_cst_value (const_tree);
-
 extern tree tree_block (tree);
 extern void tree_set_block (tree, tree);
 extern location_t *block_nonartificial_location (tree);
 extern location_t tree_nonartificial_location (tree);
-
 extern tree block_ultimate_origin (const_tree);
-
 extern tree get_binfo_at_offset (tree, HOST_WIDE_INT, tree);
 extern bool virtual_method_call_p (tree);
 extern tree obj_type_ref_class (tree ref);
@@ -4610,163 +4250,8 @@ extern bool type_in_anonymous_namespace_p (tree);
 extern bool block_may_fallthru (const_tree);
 extern void using_eh_for_cleanups (void);
 extern bool using_eh_for_cleanups_p (void);
-
 extern const char *get_tree_code_name (enum tree_code);
-
-/* In function.c */
-extern void expand_function_end (void);
-extern void expand_function_start (tree);
-extern void stack_protect_epilogue (void);
-extern void init_dummy_function_start (void);
-extern void expand_dummy_function_end (void);
-extern void allocate_struct_function (tree, bool);
-extern void push_struct_function (tree fndecl);
-extern void init_function_start (tree);
-extern bool use_register_for_decl (const_tree);
-extern void generate_setjmp_warnings (void);
-extern void init_temp_slots (void);
-extern void free_temp_slots (void);
-extern void pop_temp_slots (void);
-extern void push_temp_slots (void);
-extern void preserve_temp_slots (rtx);
-extern int aggregate_value_p (const_tree, const_tree);
-extern void push_function_context (void);
-extern void pop_function_context (void);
-extern gimple_seq gimplify_parameters (void);
-
-/* In print-rtl.c */
-#ifdef BUFSIZ
-extern void print_rtl (FILE *, const_rtx);
-#endif
-
-/* In print-tree.c */
-extern void debug_tree (tree);
-extern void debug_raw (const tree_node &ref);
-extern void debug_raw (const tree_node *ptr);
-extern void debug (const tree_node &ref);
-extern void debug (const tree_node *ptr);
-extern void debug_verbose (const tree_node &ref);
-extern void debug_verbose (const tree_node *ptr);
-extern void debug_head (const tree_node &ref);
-extern void debug_head (const tree_node *ptr);
-extern void debug_body (const tree_node &ref);
-extern void debug_body (const tree_node *ptr);
-extern void debug_vec_tree (vec<tree, va_gc> *);
-extern void debug (vec<tree, va_gc> &ref);
-extern void debug (vec<tree, va_gc> *ptr);
-extern void debug_raw (vec<tree, va_gc> &ref);
-extern void debug_raw (vec<tree, va_gc> *ptr);
-#ifdef BUFSIZ
-extern void dump_addr (FILE*, const char *, const void *);
-extern void print_node (FILE *, const char *, tree, int);
-extern void print_node_brief (FILE *, const char *, const_tree, int);
-extern void indent_to (FILE *, int);
-#endif
-
-/* In tree-inline.c:  */
-extern bool debug_find_tree (tree, tree);
-/* This is in tree-inline.c since the routine uses
-   data structures from the inliner.  */
-extern tree build_duplicate_type (tree);
-
-/* In calls.c */
-extern int flags_from_decl_or_type (const_tree);
-extern int call_expr_flags (const_tree);
 extern void set_call_expr_flags (tree, int);
-
-extern int setjmp_call_p (const_tree);
-extern bool gimple_alloca_call_p (const_gimple);
-extern bool alloca_call_p (const_tree);
-extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree);
-extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree);
-
-/* In attribs.c.  */
-
-extern const struct attribute_spec *lookup_attribute_spec (const_tree);
-extern void init_attributes (void);
-
-/* Process the attributes listed in ATTRIBUTES and install them in *NODE,
-   which is either a DECL (including a TYPE_DECL) or a TYPE.  If a DECL,
-   it should be modified in place; if a TYPE, a copy should be created
-   unless ATTR_FLAG_TYPE_IN_PLACE is set in FLAGS.  FLAGS gives further
-   information, in the form of a bitwise OR of flags in enum attribute_flags
-   from tree.h.  Depending on these flags, some attributes may be
-   returned to be applied at a later stage (for example, to apply
-   a decl attribute to the declaration rather than to its type).  */
-extern tree decl_attributes (tree *, tree, int);
-
-extern bool cxx11_attribute_p (const_tree);
-
-extern tree get_attribute_name (const_tree);
-
-extern void apply_tm_attr (tree, tree);
-
-/* In stor-layout.c */
-extern void set_min_and_max_values_for_integral_type (tree, int, bool);
-extern void fixup_signed_type (tree);
-extern void internal_reference_types (void);
-extern unsigned int update_alignment_for_field (record_layout_info, tree,
-                                                unsigned int);
-/* varasm.c */
-extern tree tree_output_constant_def (tree);
-extern void make_decl_rtl (tree);
-extern rtx make_decl_rtl_for_debug (tree);
-extern void make_decl_one_only (tree, tree);
-extern int supports_one_only (void);
-extern void resolve_unique_section (tree, int, int);
-extern void mark_referenced (tree);
-extern void mark_decl_referenced (tree);
-extern void notice_global_symbol (tree);
-extern void set_user_assembler_name (tree, const char *);
-extern void process_pending_assemble_externals (void);
-extern bool decl_replaceable_p (tree);
-extern bool decl_binds_to_current_def_p (tree);
-extern enum tls_model decl_default_tls_model (const_tree);
-
-/* Declare DECL to be a weak symbol.  */
-extern void declare_weak (tree);
-/* Merge weak status.  */
-extern void merge_weak (tree, tree);
-/* Make one symbol an alias for another.  */
-extern void assemble_alias (tree, tree);
-
-/* Return nonzero if VALUE is a valid constant-valued expression
-   for use in initializing a static variable; one that can be an
-   element of a "constant" initializer.
-
-   Return null_pointer_node if the value is absolute;
-   if it is relocatable, return the variable that determines the relocation.
-   We assume that VALUE has been folded as much as possible;
-   therefore, we do not need to check for such things as
-   arithmetic-combinations of integers.  */
-extern tree initializer_constant_valid_p (tree, tree);
-
-/* Return true if VALUE is a valid constant-valued expression
-   for use in initializing a static bit-field; one that can be
-   an element of a "constant" initializer.  */
-extern bool initializer_constant_valid_for_bitfield_p (tree);
-
-/* Whether a constructor CTOR is a valid static constant initializer if all
-   its elements are.  This used to be internal to initializer_constant_valid_p
-   and has been exposed to let other functions like categorize_ctor_elements
-   evaluate the property while walking a constructor for other purposes.  */
-
-extern bool constructor_static_from_elts_p (const_tree);
-
-/* In stmt.c */
-extern bool parse_output_constraint (const char **, int, int, int,
-				     bool *, bool *, bool *);
-extern bool parse_input_constraint (const char **, int, int, int, int,
-				    const char * const *, bool *, bool *);
-extern tree resolve_asm_operand_names (tree, tree, tree, tree);
-#ifdef HARD_CONST
-/* Silly ifdef to avoid having all includers depend on hard-reg-set.h.  */
-extern tree tree_overlaps_hard_reg_set (tree, HARD_REG_SET *);
-#endif
-
-
-/* In tree-inline.c  */
-
 extern tree walk_tree_1 (tree*, walk_tree_fn, void*, struct pointer_set_t*,
 			 walk_tree_lh);
 extern tree walk_tree_without_duplicates_1 (tree*, walk_tree_fn, void*,
@@ -4776,16 +4261,7 @@ extern tree walk_tree_without_duplicates_1 (tree*, walk_tree_fn, void*,
 #define walk_tree_without_duplicates(a,b,c) \
 	walk_tree_without_duplicates_1 (a, b, c, NULL)
 
-/* In emit-rtl.c */
-/* Assign the RTX to declaration.  */
-
-extern void set_decl_rtl (tree, rtx);
-extern void set_decl_incoming_rtl (tree, rtx, bool);
-
-/* In gimple.c.  */
 extern tree get_base_address (tree t);
-
-/* In tree.c.  */
 extern tree drop_tree_overflow (tree);
 extern int tree_map_base_eq (const void *, const void *);
 extern unsigned int tree_map_base_hash (const void *);
@@ -4811,33 +4287,6 @@ extern unsigned int tree_decl_map_hash (const void *);
 #define tree_vec_map_hash tree_decl_map_hash
 #define tree_vec_map_marked_p tree_map_base_marked_p
 
-/* In tree-object-size.c.  */
-extern void init_object_sizes (void);
-extern unsigned HOST_WIDE_INT compute_builtin_object_size (tree, int);
-
-/* In expr.c.  */
-
-/* Determine whether the LEN bytes can be moved by using several move
-   instructions.  Return nonzero if a call to move_by_pieces should
-   succeed.  */
-extern int can_move_by_pieces (unsigned HOST_WIDE_INT, unsigned int);
-
-extern unsigned HOST_WIDE_INT highest_pow2_factor (const_tree);
-extern tree build_personality_function (const char *);
-
-/* In trans-mem.c.  */
-extern tree build_tm_abort_call (location_t, bool);
-extern bool is_tm_safe (const_tree);
-extern bool is_tm_pure (const_tree);
-extern bool is_tm_may_cancel_outer (tree);
-extern bool is_tm_ending_fndecl (tree);
-extern void record_tm_replacement (tree, tree);
-extern void tm_malloc_replacement (tree);
-
-/* In tree-inline.c.  */
-
-void init_inline_once (void);
-
 /* Initialize the abstract argument list iterator object ITER with the
    arguments from CALL_EXPR node EXP.  */
 static inline void
@@ -5045,5 +4494,70 @@ may_be_aliased (const_tree var)
 #endif	/* NO_DOLLAR_IN_LABEL */
 #endif	/* NO_DOT_IN_LABEL */
 
+/* FIXME - These declarations belong in builtins.h, expr.h and emit-rtl.h,
+   but none of these files are allowed to be included from front ends.
+   They should be split in two. One suitable for the FEs, the other suitable
+   for the BE.  */
+
+/* Assign the RTX to declaration.  */
+extern void set_decl_rtl (tree, rtx);
+extern bool complete_ctor_at_level_p (const_tree, HOST_WIDE_INT, const_tree);
+
+/* Return a tree representing the upper bound of the array mentioned in
+   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+extern tree array_ref_up_bound (tree);
+
+extern tree build_personality_function (const char *);
+
+/* Given an expression EXP that is a handled_component_p,
+   look for the ultimate containing object, which is returned and specify
+   the access position and size.  */
+extern tree get_inner_reference (tree, HOST_WIDE_INT *, HOST_WIDE_INT *,
+				 tree *, enum machine_mode *, int *, int *,
+				 bool);
+
+/* Return a tree representing the lower bound of the array mentioned in
+   EXP, an ARRAY_REF or an ARRAY_RANGE_REF.  */
+extern tree array_ref_low_bound (tree);
+
+/* In builtins.c.  */
+
+/* Non-zero if __builtin_constant_p should be folded right away.  */
+extern bool force_folding_builtin_constant_p;
+
+extern bool avoid_folding_inline_builtin (tree);
+extern tree fold_call_expr (location_t, tree, bool);
+extern tree fold_builtin_fputs (location_t, tree, tree, bool, bool, tree);
+extern tree fold_builtin_strcpy (location_t, tree, tree, tree, tree);
+extern tree fold_builtin_strncpy (location_t, tree, tree, tree, tree, tree);
+extern tree fold_builtin_memory_chk (location_t, tree, tree, tree, tree, tree, tree, bool,
+				     enum built_in_function);
+extern tree fold_builtin_stxcpy_chk (location_t, tree, tree, tree, tree, tree, bool,
+				     enum built_in_function);
+extern tree fold_builtin_stxncpy_chk (location_t, tree, tree, tree, tree, tree, bool,
+				      enum built_in_function);
+extern bool fold_builtin_next_arg (tree, bool);
+extern enum built_in_function builtin_mathfn_code (const_tree);
+extern tree fold_builtin_call_array (location_t, tree, tree, int, tree *);
+extern tree build_call_expr_loc_array (location_t, tree, int, tree *);
+extern tree build_call_expr_loc_vec (location_t, tree, vec<tree, va_gc> *);
+extern tree build_call_expr_loc (location_t, tree, int, ...);
+extern tree build_call_expr (tree, int, ...);
+extern tree mathfn_built_in (tree, enum built_in_function fn);
+extern tree c_strlen (tree, int);
+extern tree build_string_literal (int, const char *);
+extern rtx builtin_memset_read_str (void *, HOST_WIDE_INT, enum machine_mode);
+extern bool is_builtin_fn (tree);
+extern bool get_object_alignment_1 (tree, unsigned int *,
+				    unsigned HOST_WIDE_INT *);
+extern unsigned int get_object_alignment (tree);
+extern bool get_pointer_alignment_1 (tree, unsigned int *,
+				     unsigned HOST_WIDE_INT *);
+extern unsigned int get_pointer_alignment (tree);
+extern tree fold_call_stmt (gimple, bool);
+extern tree gimple_fold_builtin_snprintf_chk (gimple, tree, enum built_in_function);
+extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
+extern bool is_simple_builtin (tree);
+extern bool is_inexpensive_builtin (tree);
 
 #endif  /* GCC_TREE_H  */
diff --git a/gcc/tsan.c b/gcc/tsan.c
index b8f65af65411a0da92b88e198cf8de57a4e8c5ca..42730f07f84e90dc29915ff8a4d8f156b1cb537c 100644
--- a/gcc/tsan.c
+++ b/gcc/tsan.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "expr.h"
 #include "intl.h"
 #include "tm.h"
 #include "basic-block.h"
@@ -33,6 +34,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "cgraph.h"
 #include "tree-cfg.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "tree-iterator.h"
diff --git a/gcc/ubsan.c b/gcc/ubsan.c
index 62894d9687e15d6e931cff15b42d4b69c1467157..de5dc40d659bb8516b8131338e1bd8143d74d97e 100644
--- a/gcc/ubsan.c
+++ b/gcc/ubsan.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "system.h"
 #include "coretypes.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
 #include "cgraph.h"
 #include "tree-pass.h"
 #include "gimple.h"
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index f21ff00f2cbed5ac9747f7f64e5b0ce8a35191f8..2fe12b603f28d093ccf94311a57ec5397ae55bbd 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "tree-nested.h"
+#include "calls.h"
 #include "rtl.h"
 #include "expr.h"
 #include "hard-reg-set.h"
@@ -40,6 +42,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-cfg.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "diagnostic.h"
 #include "gimple-pretty-print.h"
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index fc3fc93ca5b4b1310105400ee67dcc3433f98b16..a569d468ec3a38da077faa63db79abad581a7c4d 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -91,6 +91,9 @@
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "varasm.h"
+#include "stor-layout.h"
+#include "gimple.h"
 #include "tm_p.h"
 #include "hard-reg-set.h"
 #include "basic-block.h"
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 1fd53f0457f61fbbb7cfedf3864164a0ecb4d4be..475d196063cb16e72db5b8f3f578d7167e0872df 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -31,6 +31,10 @@ along with GCC; see the file COPYING3.  If not see
 #include "tm.h"
 #include "rtl.h"
 #include "tree.h"
+#include "stor-layout.h"
+#include "stringpool.h"
+#include "gcc-symtab.h"
+#include "varasm.h"
 #include "flags.h"
 #include "function.h"
 #include "expr.h"
diff --git a/gcc/varasm.h b/gcc/varasm.h
new file mode 100644
index 0000000000000000000000000000000000000000..d2a01a700ab6dae9bd9189c21bb80396f67e85e8
--- /dev/null
+++ b/gcc/varasm.h
@@ -0,0 +1,69 @@
+/* Declarations for varasm.h.
+   Copyright (C) 2013 Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 3, or (at your option) any later
+version.
+
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#ifndef GCC_VARASM_H
+#define GCC_VARASM_H
+
+extern tree tree_output_constant_def (tree);
+extern void make_decl_rtl (tree);
+extern rtx make_decl_rtl_for_debug (tree);
+extern void make_decl_one_only (tree, tree);
+extern int supports_one_only (void);
+extern void resolve_unique_section (tree, int, int);
+extern void mark_referenced (tree);
+extern void mark_decl_referenced (tree);
+extern void notice_global_symbol (tree);
+extern void set_user_assembler_name (tree, const char *);
+extern void process_pending_assemble_externals (void);
+extern bool decl_replaceable_p (tree);
+extern bool decl_binds_to_current_def_p (tree);
+extern enum tls_model decl_default_tls_model (const_tree);
+
+/* Declare DECL to be a weak symbol.  */
+extern void declare_weak (tree);
+
+/* Merge weak status.  */
+extern void merge_weak (tree, tree);
+
+/* Make one symbol an alias for another.  */
+extern void assemble_alias (tree, tree);
+
+/* Return nonzero if VALUE is a valid constant-valued expression
+   for use in initializing a static variable; one that can be an
+   element of a "constant" initializer.
+
+   Return null_pointer_node if the value is absolute;
+   if it is relocatable, return the variable that determines the relocation.
+   We assume that VALUE has been folded as much as possible;
+   therefore, we do not need to check for such things as
+   arithmetic-combinations of integers.  */
+extern tree initializer_constant_valid_p (tree, tree);
+
+/* Return true if VALUE is a valid constant-valued expression
+   for use in initializing a static bit-field; one that can be
+   an element of a "constant" initializer.  */
+extern bool initializer_constant_valid_for_bitfield_p (tree);
+
+/* Whether a constructor CTOR is a valid static constant initializer if all
+   its elements are.  This used to be internal to initializer_constant_valid_p
+   and has been exposed to let other functions like categorize_ctor_elements
+   evaluate the property while walking a constructor for other purposes.  */
+extern bool constructor_static_from_elts_p (const_tree);
+
+#endif  // GCC_VARASM_H
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 4521caf2b10645a56cfb27656de51b30c28ce758..06b93a30d5f3df6aa425441b224976486e332f63 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -23,6 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
 #include "cgraph.h"
 #include "langhooks.h"
 #include "diagnostic-core.h"
diff --git a/gcc/vmsdbgout.c b/gcc/vmsdbgout.c
index 9f308a6fdf2ee0970be9a68cd95fe77aadaee509..7972dd7a93e88fe741f7125f1413b8792323fcb1 100644
--- a/gcc/vmsdbgout.c
+++ b/gcc/vmsdbgout.c
@@ -26,6 +26,7 @@ along with GCC; see the file COPYING3.  If not see
 
 #ifdef VMS_DEBUGGING_INFO
 #include "tree.h"
+#include "varasm.h"
 #include "version.h"
 #include "flags.h"
 #include "rtl.h"
diff --git a/gcc/vtable-verify.c b/gcc/vtable-verify.c
index ecf1dc25e84e6c92dbe739d6d340e2fb1a6402ca..8d692e62e1170acee838efcecfa1acfa9554149f 100644
--- a/gcc/vtable-verify.c
+++ b/gcc/vtable-verify.c
@@ -143,6 +143,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-ssa.h"
 #include "tree-phinodes.h"
 #include "ssa-iterators.h"
+#include "stringpool.h"
 #include "tree-ssanames.h"
 #include "tree-pass.h"
 #include "cfgloop.h"
diff --git a/gcc/xcoffout.c b/gcc/xcoffout.c
index 8a9093c10c2aa71309f70e0eebfcdc3ff5a23ae3..c14f01424f36d3eb74f1b6a8dd546fb5f928a9c1 100644
--- a/gcc/xcoffout.c
+++ b/gcc/xcoffout.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "varasm.h"
 #include "rtl.h"
 #include "flags.h"
 #include "diagnostic-core.h"