2009-10-05 Doug Kwan <dougkwan@google.com>
PR rtl-optimization/41574
Index: combine.c (distribute_and_simplify_rtx): Quit if RTX mode is
floating point and we are not doing unsafe math optimizations.
From-SVN: r152443
Add support for comdat type sections for DWARF v4. Merge from dwarf4
branch.
* dwarf2out.c (DWARF_TYPE_SIGNATURE_SIZE): New constant.
(dw_die_ref): Define vector type.
(enum dw_val_class): Add dw_val_class_data8.
(struct dw_val_struct): Add v.val_data8.
(comdat_type_node_ref): New type.
(struct die_struct): Move die_symbol into a union; add new field
die_type_node. Change all uses.
(comdat_type_node): New type.
(skeleton_chain_node): New type.
(DWARF_COMDAT_TYPE_UNIT_HEADER_SIZE): New constant.
(comdat_type_list): New variable.
(dwarf_tag_name): Add DW_TAG_type_unit.
(dwarf_attr_name): Add DW_AT_signature.
(add_AT_data8): New function.
(replace_child): New function.
(move_all_children): New function.
(print_signature): New function.
(print_die): Print signature information; add dw_val_class_data8.
(attr_checksum): Support dw_val_class_data8.
(CHECKSUM_STRING): Redefine for DWARF-4 to include
trailing NULL byte.
(CHECKSUM_SLEB128, CHECKSUM_ULEB128): New macros.
(checksum_sleb128, checksum_uleb128): New functions.
(checksum_die_context): New function.
(loc_checksum_ordered): New function.
(attr_checksum_ordered): New function.
(struct checksum_attributes): New structure.
(collect_checksum_attributes): New function.
(die_checksum_ordered): New function.
(generate_type_signature): New function.
(same_dw_val_p): Add dw_val_class_data8.
(is_symbol_die): Use new is_declaration_die function.
(is_declaration_die): New function.
(should_move_die_to_comdat): New function.
(clone_die): New function.
(clone_tree): New function.
(clone_as_declaration): New function.
(copy_declaration_context): New function.
(generate_skeleton_ancestor_tree): New function.
(generate_skeleton_bottom_up): New function.
(generate_skeleton): New function.
(remove_child_or_replace_with_skeleton): New function.
(break_out_comdat_types): New function.
(struct decl_table_entry): New type.
(htab_decl_hash): New function.
(htab_decl_eq): New function.
(htab_decl_del): New function.
(copy_ancestor_tree): New function.
(copy_decls_walk): New function.
(copy_decls_for_unworthy_types): New function.
(build_abbrev_table): Don't assert on missing die_symbol when doing
comdat type sections.
(size_of_die): Use DW_FORM_sig8 for external references; Add
dw_val_class_data8.
(unmark_dies): Don't assert for unmarked dies when doing comdat
type sections.
(value_format): Support DW_FORM_sig8 and dw_val_class_data8.
(output_signature): New function.
(output_die): Likewise.
(output_compilation_unit_header): Mark output as DWARF version 3
even if generating DWARF 4.
(output_comdat_type_unit): New function.
(output_line_info): Mark output as DWARF version 3 even if generating
DWARF 4.
(dwarf2out_start_source_file): Don't do eliminate_dwarf2_dups with
DWARF-4.
(dwarf2out_end_source_file): Likewise.
(prune_unused_types_walk_attribs): Don't follow references into
comdat type sections.
(prune_unused_types_mark): When generating type units, do not mark
children of non-defining declarations of types; do mark children of
type entries.
(prune_unused_types): Process comdat type sections.
(htab_ct_hash): New function.
(htab_ct_eq): New function.
(dwarf2out_finish): Move types to comdat sections when using DWARF-4.
Add a pointer to the line table from type unit entries so
DW_AT_decl_file has meaning.
* varasm.c (default_elf_asm_named_section): Use identifier name as
comdat key instead of lang hook.
From-SVN: r152421
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>:
Generate an XVZ variable alongside the XVS type if the size is
not constant.
(maybe_pad_type): Minor tweak.
From-SVN: r152420
* gcc-interface/decl.c (gnat_to_gnu_component_type): Force at least
unit size for the component size of an array with aliased components.
(maybe_pad_type): Do not warn for MAX_EXPR.
From-SVN: r152417
divmoddi4, divmodsi4 and divmodhi4 patterns using SWI248 macro.
(*divmod<mode>4): Macroize insn_and_split pattern from
*divmoddi4_cltd_rex64, *divmodsi4_cltd and divmodhi4 insn patterns
and their corresponding splitters usign SWI248 macro. Split SImode
insn to generate cltd and DImode insn to generate cqto instead of
move+shift when optimizing for size or TARGET_USE_CLTD is in effect.
(*divmoddi4_nocltd_rex64, *divmodsi4_nocltd): Remove insn patterns.
(*divmod<mode>4_noext): Macroize insn from *divmoddi_noext_rex64 and
*divmodsi_noext patterns using SWI248 macro.
(udivmod<mode>4): Macroize expander from udivmoddi4, udivmodsi4 and
udivmodhi4 patterns using SWI248 macro.
(*udivmod<mode>4): Macroize insn_and_split pattern from
*udivmoddi4, udivmodsi4 and udivmodhi4 patterns and their
corresponding splitters using SWI248 macro.
(*udivmod<mode>4_noext): Macroize insn from *udivmoddi4_noext,
*udivmodsi4_noext and *udivmodhi_noext patterns using SWI248 macro.
From-SVN: r152416
2009-10-02 Tobias Burnus <burnus@net-b.de>
PR fortran/41479
* trans-decl.c (gfc_init_default_dt): Check for presence of
the argument only if it is optional or in entry master.
(init_intent_out_dt): Ditto; call gfc_init_default_dt
for all derived types with initializers.
2009-10-02 Tobias Burnus <burnus@net-b.de>
PR fortran/41479
* gfortran.dg/intent_out_5.f90: New test.
From-SVN: r152407
PR debug/41404
PR debug/41353
* cfgexpand.c (expand_debug_expr) <case STRING_CST>: Don't create
CONST_STRING if STRING_CST contains embedded '\0's or doesn't end with
'\0'.
(expand_debug_expr) <case VAR_DECL>: For TREE_STATIC !DECL_EXTERNAL
vars use DECL_RTL with resetting it back to NULL afterwards.
* dwarf2out.c (same_dw_val_p): For dw_val_class_addr compare with
rtx_equal_p instead of asserting it is a SYMBOL_REF.
(value_format): For dw_val_class_addr only use DW_FORM_addr if
the attribute type allows it, otherwise use DW_FORM_dataN.
(mem_loc_descriptor): Handle CONST_STRING.
(add_const_value_attribute): Handle CONST_STRING using add_AT_addr.
Handle MEM with CONST_STRING address using add_AT_string.
(rtl_for_decl_init): Return MEM with CONST_STRING address instead of
CONST_STRING for const arrays initialized with a string literal.
(resolve_one_addr, resolve_addr_in_expr, resolve_addr): New functions.
(dwarf2out_finish): Call resolve_addr.
* gcc.dg/guality/pr41404-1.c: New test.
* gcc.dg/guality/pr41353-2.c: New test.
From-SVN: r152403
2009-10-01 Loren J. Rittle <ljrittle@acm.org>
Paolo Bonzini <bonzini@gnu.org>
* Makefile.tpl (POSTSTAGE1_HOST_EXPORTS): Use $$s rather than
$(srcdir).
* Makefile.in: Rebuilt.
Co-Authored-By: Paolo Bonzini <bonzini@gnu.org>
From-SVN: r152387
2009-10-01 Phil Muldoon <pmuldoon@redhat.com>
* python/libstdcxx/v6/printers.py (StdListPrinter):
Add -D_GLIBCXX_DEBUG implementation changes. Receive typename from
printer registration.
(StdListIteratorPrinter): Likewise.
(StdDebugIteratorPrinter): New printer.
(build_libstdcxx_dictionary): Add -D_GLIBCXX_DEBUG registration
entries. Always pass a typename where the type can change.
(StdSlistPrinter) Receive typename from printer registration. Use
in printer output.
(StdBitsetPrinter): Likewise.
(StdDequePrinter): Likewise.
From-SVN: r152385
2009-10-01 Phil Muldoon <pmuldoon@redhat.com>
* python/libstdcxx/v6/printers.py (StdListPrinter):
Add -D_GLIBCXX_DEBUG implementation changes. Receive typename from
printer registration.
(StdListIteratorPrinter): Likewise.
(StdDebugIteratorPrinter): New printer.
(build_libstdcxx_dictionary): Add -D_GLIBCXX_DEBUG registration
entries. Always pass a typename where the type can change.
(StdSlistPrinter) Receive typename from printer registration. Use
in printer output.
(StdBitsetPrinter): Likewise.
(StdDequePrinter): Likewise.
From-SVN: r152383
* pt.c (register_specialization): Push DECL_SOURCE_LOCATION to the
clones.
* decl.c (grok_special_member_properties): Only adjust
TYPE_HAS_COMPLEX_* if the function is defaulted in the class body.
(cp_finish_decl): Push DECL_DELETED_FN/DECL_DEFAULTED_FN to the
clones.
From-SVN: r152373
2009-10-01 Martin Jambor <mjambor@suse.cz>
PR middle-end/12392
* tree-sra.c (convert_callers): Do not call
compute_inline_parameters on one caller more than once.
From-SVN: r152368
2009-10-01 Martin Jambor <mjambor@suse.cz>
PR bootstrap/41395
* tree-sra.c (is_va_list_type): New function.
(find_var_candidates): Call is_va_list_type.
(find_param_candidates): Check that the type or the type pointed
to are not va_list types.
From-SVN: r152366