Jerry DeLisle [Tue, 6 Oct 2009 03:08:20 +0000 (03:08 +0000)]
re PR libfortran/35862 ([F2003] Implement new rounding modes for run time)
2009-10-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/35862
* write_float.def (outout_float): Fix handling of special case where no
digits after the decimal point and values less than 1.0. Adjust index
into digits string. (WRITE_FLOAT): Remove special case code from macro.
Ralf Wildenhues [Mon, 5 Oct 2009 19:54:18 +0000 (19:54 +0000)]
Fix check_warning_flags warnings.
gcc/:
* c.opt (Wjump-misses-init): Fix typo to enable for ObjC.
* doc/invoke.texi (Warning Options): Annotate allowed languages
for -Wunsuffixed-float-constants.
Jakub Jelinek [Mon, 5 Oct 2009 19:52:20 +0000 (21:52 +0200)]
dwarf2out.c (modified_type_die): Don't add DW_AT_name to DW_TAG_{const,volatile}_type if...
* dwarf2out.c (modified_type_die): Don't add DW_AT_name to
DW_TAG_{const,volatile}_type if its DW_AT_type already has the
same name and isn't the main variant.
Jakub Jelinek [Mon, 5 Oct 2009 19:50:57 +0000 (21:50 +0200)]
re PR debug/41558 (gfortran -O code excessive DW_OP_deref's)
PR debug/41558
* dwarf2out.c (loc_by_reference): Removed.
(dw_loc_list_1): New function.
(dw_loc_list): Remove toplev argument, add want_address argument.
Don't look at decl_by_reference_p at all. Use dw_loc_list_1.
(loc_list_from_tree) <case VAR_DECL>: Pass want_address rather than
want_address == 2 to dw_loc_list. For successful dw_loc_list
set have_address to 1 only if want_address is not 0.
* gcc.dg/guality/guality.exp: Move gdb-test proc into...
* lib/gcc-gdb-test.exp: ... here. New file.
* gfortran.dg/guality/guality.exp: New file.
* gfortran.dg/guality/pr41558.f90: New test.
* gfortran.dg/guality/arg1.f90: New test.
gcc/
* config/mips/mips-protos.h (mips_trampoline_code_size): Declare.
* config/mips/mips.h (TRAMPOLINE_SIZE): Redefine as the size of
a code block followed by two pointers.
(TRAMPOLINE_ALIGNMENT): Define to 64 for 32-bit targets too.
* config/mips/mips.c (MIPS_LOAD_PTR): New macro.
(MIPS_MOVE): Likewise.
(MIPS_LUI): Likewise.
(MIPS_JR): Likewise.
(MIPS_BAL): Likewise.
(MIPS_NOP): Likewise.
(mips_asm_trampoline_template): Delete.
(mips_trampoline_code_size): New function.
(mips_trampoline_init): Add shorter sequences for all cases
except Pmode == DImoe && !TARGET_USE_PIC_FN_ADDR_REG.
Calculate the opcodes directly, rather than copying from a template.
Only flush the code part of the trampoline.
(TARGET_ASM_TRAMPOLINE_TEMPLATE): Delete.
Paul Thomas [Mon, 5 Oct 2009 18:19:55 +0000 (18:19 +0000)]
trans-expr.c (select_class_proc): New function.
2009-10-05 Paul Thomas <pault@gcc.gnu.org>
* trans-expr.c (select_class_proc): New function.
(conv_function_val): Deal with class methods and call above.
* symbol.c (gfc_type_compatible): Treat case where both ts1 and
ts2 are BT_CLASS.
gfortran.h : Add structure gfc_class_esym_list and include in
the structure gfc_expr.
* module.c (load_derived_extensions): New function.
(read_module): Call above.
(write_dt_extensions): New function.
(write_derived_extensions): New function.
(write_module): Use the above.
* resolve.c (resolve_typebound_call): Add a function expression
for class methods. This carries the chain of symbols for the
dynamic dispatch in select_class_proc.
(resolve_compcall): Add second, boolean argument to indicate if
a function is being handled.
(check_members): New function.
(check_class_members): New function.
(resolve_class_compcall): New function.
(resolve_class_typebound_call): New function.
(gfc_resolve_expr): Call above for component calls..
2009-10-05 Paul Thomas <pault@gcc.gnu.org>
* gfortran.dg/dynamic_dispatch_1.f90: New test.
* gfortran.dg/dynamic_dispatch_2.f90: New test.
* gfortran.dg/dynamic_dispatch_3.f90: New test.
* gfortran.dg/module_md5_1.f90: Update md5 sum.
Eric Botcazou [Mon, 5 Oct 2009 17:48:09 +0000 (17:48 +0000)]
re PR rtl-optimization/41511 (combine behaves differently with/without -g)
PR rtl-optimization/41511
* combine.c (record_value_for_reg): Pass explicit values as argument
to get_last_value_validate.
(get_last_value_validate): Document INSN parameter.
For non-readonly MEMs, assume they might have been modified if INSN
was in another basic block.
(get_last_value): Minor reformatting.
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r152459
Benjamin Kosnik [Mon, 5 Oct 2009 17:42:00 +0000 (17:42 +0000)]
[multiple changes]
2009-10-05 Benjamin Kosnik <bkoz@redhat.com>
Edward Smith-Rowland <3dw4rd@verizon.net>
* include/decimal/decimal: Warn if decimal floating point types
are not available.
* acinclude.m4 (GLIBCXX_ENABLE_DECIMAL_FLOAT): New.
* configure.ac: Use it.
* configure: Regenerate.
* config.h.in: Regenerate.
2009-10-05 Benjamin Kosnik <bkoz@redhat.com>
* include/Makefile.am: Remove stray line break.
* include/decimal/decimal: Brief class doxygen markup.
* libsupc++/exception: Whitespace cleanup.
* doc/Makefile.am: Process new file.
* doc/xml/manual/intro.xml: Ditto.
* doc/xml/manual/using.xml: Document new header.
* doc/xml/manual/status_cxxdecimal.xml: New file.
* include/Makefile.am: Process new headers.
* include/decimal/decimal: New file.
* include/decimal/decimal.h: New file.
2009-10-05 Janis Johnson <janis187@us.ibm.com>
* testsuite/decimal: New directory.
* testsuite/decimal/bad-cast.cc: New test.
* testsuite/decimal/bad-mixed-mode.cc: New test.
* testsuite/decimal/bad-operator.cc: New test.
* testsuite/decimal/binary-arith.cc: New test.
* testsuite/decimal/comparison.cc: New test.
* testsuite/decimal/compound-assignment.cc: New test.
* testsuite/decimal/compound-assignment-memfunc.cc: New test.
* testsuite/decimal/conversion-from-float.cc: New test.
* testsuite/decimal/conversion-from-integral.cc: New test.
* testsuite/decimal/conversion-to-generic-float.cc: New test.
* testsuite/decimal/conversion-to-integral.cc: New test.
* testsuite/decimal/ctor.cc: New test.
* testsuite/decimal/incdec.cc: New test.
* testsuite/decimal/incdec-memfunc.cc: New test.
* testsuite/decimal/make-decimal.cc: New test.
* testsuite/decimal/unary-arith.cc: New test.
re PR lto/41552 (Undefined references with -flto, dependent on object file ordering)
2009-10-05 Richard Guenther <rguenther@suse.de>
PR lto/41552
PR lto/41487
* lto-symtab.c (struct lto_symtab_base_def): Remove.
(struct lto_symtab_identifier_def): Likewise.
(struct lto_symtab_decl_def): Likewise.
(struct lto_symtab_entry_def): New.
(lto_symtab_identifier_t): Rename to ...
(lto_symtab_entry_t): ... this.
(lto_symtab_decls): Remove.
(lto_symtab_base_hash): Rename to ...
(lto_symtab_entry_hash): ... this.
(lto_symtab_base_eq): Rename to ...
(lto_symtab_entry_eq): ... this.
(lto_symtab_base_marked_p): Rename to ...
(lto_symtab_entry_marked_p): ... this.
(lto_symtab_identifier_marked_p): Remove.
(lto_symtab_decl_marked_p): Likewise.
(lto_symtab_maybe_init_hash_tables): Rename to ...
(lto_symtab_maybe_init_hash_table): ... this.
(lto_symtab_set_resolution_and_file_data): Remove.
(lto_symtab_register_decl): New function.
(lto_symtab_get_identifier): Remove.
(lto_symtab_get): New function.
(lto_symtab_get_resolution): Adjust.
(lto_symtab_get_identifier_decl): Remove.
(lto_symtab_set_identifier_decl): Likewise.
(lto_symtab_merge_decl): Rename to ...
(lto_symtab_merge): ... this. Rewrite.
(lto_symtab_merge_var): Remove.
(lto_symtab_merge_fn): Likewise.
(lto_symtab_prevailing_decl): Adjust.
(lto_cgraph_replace_node): New function.
(lto_symtab_merge_decls_2): Likewise.
(lto_symtab_merge_decls_1): Likewise.
(lto_symtab_fixup_var_decls): Likewise.
(lto_symtab_resolve_symbols): Likewise.
(lto_symtab_merge_decls): Likewise.
(lto_symtab_prevailing_decl): Adjust.
(lto_symtab_get_symtab_def): Remove.
(lto_symtab_get_file_data): Likewise.
(lto_symtab_clear_resolution): Adjust.
(lto_symtab_clear_resolution): Likewise.
* lto-cgraph.c (input_edge): Do not merge cgraph nodes here.
(input_cgraph_1): Likewise.
* lto-streamer-in.c (get_resolution): Do not provide fake
symbol resolutions here.
(deferred_global_decls): Remove.
(lto_register_deferred_decls_in_symtab): Likewise.
(lto_register_var_decl_in_symtab): Change signature, register
variable via lto_symtab_register_decl.
(lto_register_function_decl_in_symtab): Likewise.
(lto_read_tree): Adjust.
* lto-streamer.h (lto_register_deferred_decls_in_symtab): Remove.
(lto_symtab_merge_var): Likewise.
(lto_symtab_merge_fn): Likewise.
(lto_symtab_register_decl): Declare.
(lto_symtab_merge_decls): Likewise.
lto/
* lto.c (lto_read_decls): Do not register deferred decls.
(read_cgraph_and_symbols): Delay symbol and cgraph merging
until after reading the IPA summaries.
re PR tree-optimization/23821 (DOM and VRP creating harder to optimize code)
2009-10-05 Richard Guenther <rguenther@suse.de>
PR tree-optimization/23821
* tree-vrp.c (vrp_finalize): Do not perform copy propagation.
* tree-ssa-dom.c (cprop_operand): Do not propagate copies into
simple IV increments.
Doug Kwan [Mon, 5 Oct 2009 09:08:46 +0000 (09:08 +0000)]
re PR rtl-optimization/41574 (Distribute floating point expressions causes bad code [4.4 only])
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.
Cary Coutant [Fri, 2 Oct 2009 20:44:09 +0000 (20:44 +0000)]
Add support for comdat type sections for DWARF v4.
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.
Eric Botcazou [Fri, 2 Oct 2009 20:30:59 +0000 (20:30 +0000)]
decl.c (gnat_to_gnu_entity): Generate an XVZ variable alongside the XVS type if the size is not constant.
* 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.
Eric Botcazou [Fri, 2 Oct 2009 20:03:16 +0000 (20:03 +0000)]
decl.c (gnat_to_gnu_component_type): Force at least unit size for the component size of an array with aliased components.
* 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.
Uros Bizjak [Fri, 2 Oct 2009 19:47:34 +0000 (21:47 +0200)]
* config/i386/i386.md (divmod<mode>4) Macroize expander from
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.
Jakub Jelinek [Fri, 2 Oct 2009 18:52:15 +0000 (20:52 +0200)]
re PR debug/40521 (-g causes GCC to generate .eh_frame)
PR debug/40521
* configure.ac (HAVE_GAS_CFI_SECTIONS_DIRECTIVE): New test.
* configure: Regenerated.
* config.in: Regenerated.
* dwarf2out.c (dwarf2out_do_cfi_asm): Return false if
!HAVE_GAS_CFI_SECTIONS_DIRECTIVE and not emitting .eh_frame.
(dwarf2out_init): If HAVE_GAS_CFI_SECTIONS_DIRECTIVE and
not emitting .eh_frame, emit .cfi_sections .debug_frame
directive.
Tobias Burnus [Fri, 2 Oct 2009 16:25:50 +0000 (18:25 +0200)]
re PR fortran/41479 (intent(out) for types with default initialization)
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.
Jakub Jelinek [Fri, 2 Oct 2009 15:01:22 +0000 (17:01 +0200)]
re PR bootstrap/41404 (expr.c undefined reference while linking jc1)
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.
* 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.
* 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.
Jason Merrill [Thu, 1 Oct 2009 14:37:08 +0000 (10:37 -0400)]
pt.c (register_specialization): Push DECL_SOURCE_LOCATION to the clones.
* 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.
Martin Jambor [Thu, 1 Oct 2009 11:30:12 +0000 (13:30 +0200)]
re PR bootstrap/41395 (Revision 151800 failed bootstrap)
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.
Dave Korn [Wed, 30 Sep 2009 22:20:54 +0000 (22:20 +0000)]
configure.host (libgcj_sublib_ltflags): New variable.
* configure.host (libgcj_sublib_ltflags): New variable.
* configure.ac (LIBGCJ_SUBLIB_LTFLAGS): AC_SUBST variable for
the above in makefiles.
* configure: Regenerate.
* Makefile.am (libgcj_la_LDFLAGS_NOUNDEF): Rename from this ...
(LIBJAVA_LDFLAGS_NOUNDEF): ... to this, initialise from
LIBGCJ_SUBLIB_LTFLAGS (only when building sublibs), and ...
(libgij_la_LDFLAGS, libgcj_tools_la_LDFLAGS, libjvm_la_LDFLAGS,
lib_gnu_awt_xlib_la_LDFLAGS, libgcj_bc_la_LDFLAGS): ... use it in
all these places to replace hard-coded -no-undefined and -bindir
flags, as well as ...
(libgcj_la_LDFLAGS): ... updating existing reference here.
* Makefile.in: Regenerate.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
* gcj/Makefile.in: Likewise.
resolve.c (check_typebound_baseobject): Don't check for abstract types for CLASS.
fortran/
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* resolve.c (check_typebound_baseobject): Don't check for
abstract types for CLASS.
(resolve_class_assign): Adapt for RHS being a CLASS.
* trans-intrinsic.c (gfc_conv_associated): Add component ref
if expr is a CLASS.
fortran/
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* check.c (gfc_check_same_type_as): New function for checking
SAME_TYPE_AS and EXTENDS_TYPE_OF.
* decl.c (encapsulate_class_symbol): Set ABSTRACT attribute for class
container, if the contained type has it. Add an initializer for the
class container.
(add_init_expr_to_sym): Handle BT_CLASS.
(vindex_counter): New counter for setting vindices.
(gfc_match_derived_decl): Set vindex for all derived types, not only
those which are being extended.
* expr.c (gfc_check_assign_symbol): Handle NULL initialization of class
pointers.
* gfortran.h (gfc_isym_id): New values GFC_ISYM_SAME_TYPE_AS and
GFC_ISYM_EXTENDS_TYPE_OF.
(gfc_type_is_extensible): New prototype.
* intrinsic.h (gfc_check_same_type_as): New prototype.
* intrinsic.c (add_functions): Add SAME_TYPE_AS and EXTENDS_TYPE_OF.
* primary.c (gfc_expr_attr): Handle CLASS-valued functions.
* resolve.c (resolve_structure_cons): Handle BT_CLASS.
(type_is_extensible): Make non-static and rename to
'gfc_type_is_extensible.
(resolve_select_type): Renamed type_is_extensible.
(resolve_class_assign): Handle NULL pointers.
(resolve_fl_variable_derived): Renamed type_is_extensible.
(resolve_fl_derived): Ditto.
* trans-expr.c (gfc_trans_subcomponent_assign): Handle NULL
initialization of class pointer components.
(gfc_conv_structure): Handle BT_CLASS.
* trans-intrinsic.c (gfc_conv_same_type_as,gfc_conv_extends_type_of):
New functions.
(gfc_conv_intrinsic_function): Handle SAME_TYPE_AS and EXTENDS_TYPE_OF.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* gfortran.h (type_selector, select_type_tmp): New global variables.
* match.c (type_selector, select_type_tmp): New global variables,
used for SELECT TYPE statements.
(gfc_match_select_type): Better error handling. Remember selector.
(gfc_match_type_is): Create temporary variable.
* module.c (ab_attribute): New value 'AB_IS_CLASS'.
(attr_bits): New string.
(mio_symbol_attribute): Handle 'is_class'.
* resolve.c (resolve_select_type): Insert pointer assignment statement,
to assign temporary to selector.
* symbol.c (gfc_get_ha_sym_tree): Replace selector by a temporary
in SELECT TYPE statements.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* dump-parse-tree.c (show_code_node): Renamed 'alloc_list'.
* gfortran.h (gfc_code): Rename 'alloc_list'. Add member 'ts'.
(gfc_expr_to_initialize): New prototype.
* match.c (alloc_opt_list): Correctly check type compatibility.
Renamed 'alloc_list'.
(dealloc_opt_list): Renamed 'alloc_list'.
* resolve.c (expr_to_initialize): Rename to 'gfc_expr_to_initialize'
and make it non-static.
(resolve_allocate_expr): Set vindex for CLASS variables correctly.
Move initialization code to gfc_trans_allocate. Renamed 'alloc_list'.
(resolve_allocate_deallocate): Renamed 'alloc_list'.
(check_class_pointer_assign): Rename to 'resolve_class_assign'. Change
argument type. Adjust to work with ordinary assignments.
(resolve_code): Call 'resolve_class_assign' for ordinary assignments.
Renamed 'check_class_pointer_assign'.
* st.c (gfc_free_statement): Renamed 'alloc_list'.
* trans-stmt.c (gfc_trans_allocate): Renamed 'alloc_list'. Handle
size determination and initialization of CLASS variables. Bugfix for
ALLOCATE statements with default initialization and SOURCE block.
(gfc_trans_deallocate): Renamed 'alloc_list'.
2009-09-30 Paul Thomas <pault@gcc.gnu.org>
* trans-expr.c (gfc_conv_procedure_call): Convert a derived
type actual to a class object if the formal argument is a
class.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
PR fortran/40996
* decl.c (build_struct): Handle allocatable scalar components.
* expr.c (gfc_add_component_ref): Correctly set typespec of expression,
after inserting component reference.
* match.c (gfc_match_type_is,gfc_match_class_is): Make sure that no
variables are being used uninitialized.
* primary.c (gfc_match_varspec): Handle CLASS array components.
* resolve.c (resolve_select_type): Transform EXEC_SELECT_TYPE to
EXEC_SELECT.
* trans-array.c (structure_alloc_comps,gfc_trans_deferred_array):
Handle allocatable scalar components.
* trans-expr.c (gfc_conv_component_ref): Ditto.
* trans-types.c (gfc_get_derived_type): Ditto.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* decl.c (encapsulate_class_symbol): Modify names of class container
components by prefixing with '$'.
(gfc_match_end): Handle COMP_SELECT_TYPE.
* expr.c (gfc_add_component_ref): Modify names of class container
components by prefixing with '$'.
* gfortran.h (gfc_statement): Add ST_SELECT_TYPE, ST_TYPE_IS and
ST_CLASS_IS.
(gfc_case): New field 'ts'.
(gfc_exec_op): Add EXEC_SELECT_TYPE.
(gfc_type_is_extension_of): New prototype.
* match.h (gfc_match_select_type,gfc_match_type_is,gfc_match_class_is):
New prototypes.
* match.c (match_derived_type_spec): New function.
(match_type_spec): Use 'match_derived_type_spec'.
(match_case_eos): Modify error message.
(gfc_match_select_type): New function.
(gfc_match_case): Modify error message.
(gfc_match_type_is): New function.
(gfc_match_class_is): Ditto.
* parse.h (gfc_compile_state): Add COMP_SELECT_TYPE.
* parse.c (decode_statement): Handle SELECT TYPE, TYPE IS and CLASS IS
statements.
(next_statement): Handle ST_SELECT_TYPE.
(gfc_ascii_statement): Handle ST_SELECT_TYPE, ST_TYPE_IS, ST_CLASS_IS.
(parse_select_type_block): New function.
(parse_executable): Handle ST_SELECT_TYPE.
* resolve.c (resolve_deallocate_expr): Handle BT_CLASS. Modify names of
class container components by prefixing with '$'.
(resolve_allocate_expr): Ditto.
(resolve_select_type): New function.
(gfc_resolve_blocks): Handle EXEC_SELECT_TYPE.
(check_class_pointer_assign): Modify names of class container
components by prefixing with '$'.
(resolve_code): Ditto.
* st.c (gfc_free_statement): Ditto.
* symbol.c (gfc_type_is_extension_of): New function.
(gfc_type_compatible): Use 'gfc_type_is_extension_of', plus a bugfix.
* trans.c (gfc_trans_code): Handel EXEC_SELECT_TYPE.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
* check.c (gfc_check_move_alloc): Arguments don't have to be arrays.
The second argument needs to be type-compatible with the first (not the
other way around, which makes a difference for CLASS entities).
* decl.c (encapsulate_class_symbol): New function.
(build_sym,build_struct): Handle BT_CLASS, call
'encapsulate_class_symbol'.
(gfc_match_decl_type_spec): Remove warning, use BT_CLASS.
(gfc_match_derived_decl): Set vindex;
* expr.c (gfc_add_component_ref): New function.
(gfc_copy_expr,gfc_check_pointer_assign,gfc_check_assign_symbol):
Handle BT_CLASS.
* dump-parse-tree.c (show_symbol): Print vindex.
* gfortran.h (bt): New basic type BT_CLASS.
(symbol_attribute): New field 'is_class'.
(gfc_typespec): Remove field 'is_class'.
(gfc_symbol): New field 'vindex'.
(gfc_get_ultimate_derived_super_type): New prototype.
(gfc_add_component_ref): Ditto.
* interface.c (gfc_compare_derived_types): Pointer equality check
moved here from gfc_compare_types.
(gfc_compare_types): Handle BT_CLASS and use
gfc_type_compatible.
* match.c (gfc_match_allocate,gfc_match_deallocate,gfc_match_call):
Handle BT_CLASS.
* misc.c (gfc_clear_ts): Removed is_class.
(gfc_basic_typename,gfc_typename): Handle BT_CLASS.
* module.c (bt_types,mio_typespec): Handle BT_CLASS.
(mio_symbol): Handle vindex.
* primary.c (gfc_match_varspec,gfc_variable_attr): Handle BT_CLASS.
* resolve.c (find_array_spec,check_typebound_baseobject):
Handle BT_CLASS.
(resolve_ppc_call,resolve_expr_ppc): Don't call 'gfc_is_proc_ptr_comp'
inside 'gcc_assert'.
(resolve_deallocate_expr,resolve_allocate_expr): Handle BT_CLASS.
(check_class_pointer_assign): New function.
(resolve_code): Handle BT_CLASS, call check_class_pointer_assign.
(resolve_fl_var_and_proc,type_is_extensible,resolve_fl_variable_derived,
resolve_fl_variable): Handle BT_CLASS.
(check_generic_tbp_ambiguity): Add special case.
(resolve_typebound_procedure,resolve_fl_derived): Handle BT_CLASS.
* symbol.c (gfc_get_ultimate_derived_super_type): New function.
(gfc_type_compatible): Handle BT_CLASS.
* trans-expr.c (conv_parent_component_references): Handle CLASS
containers.
(gfc_conv_initializer): Handle BT_CLASS.
* trans-types.c (gfc_typenode_for_spec,gfc_get_derived_type):
Handle BT_CLASS.
testsuite/
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* gfortran.dg/same_type_as_1.f03: New test.
* gfortran.dg/same_type_as_2.f03: Ditto.
2009-09-30 Janus Weil <janus@gcc.gnu.org>
* gfortran.dg/select_type_1.f03: Extended.
* gfortran.dg/select_type_3.f03: New test.
Jakub Jelinek [Wed, 30 Sep 2009 09:57:56 +0000 (11:57 +0200)]
re PR target/41279 (252.eon performance regression)
PR target/41279
* cfgloopanal.c (num_loop_insns): Don't increment ninsns for each bb
before insn counting loop now that BB_END (bb) is counted. Ensure
the return value isn't zero.
Nick Clifton [Wed, 30 Sep 2009 07:27:28 +0000 (07:27 +0000)]
config.gcc (sh-symbianelf): Replace definition of extra_objs with separate definitions of c_target_objs and...
* config.gcc (sh-symbianelf): Replace definition of extra_objs
with separate definitions of c_target_objs and cxx_target_objs.
* config/sh/t-sh: Add rules to build symbian-cxx.o, symbian-c.o
and symbian-base.o.
* config/sh/sh.c (TARGET_CXX_INPUT_EXPORT_CLASS): Use
sh_symbian_import_export_class.
* config/sh/sh-protos.h: Fix names of exported symbian functions.
* config/sh/symbian.c: Delete, moving code into...
* config/sh/symbian-base.c: ... here
* config/sh/symbian-c.c: ... and here
* config/sh/symbian-cxx.c: ... and here.
sed and head portability fixes in ld version check.
libstdc++-v3/:
PR libstdc++/38923
* acinclude.m4 (GLIBCXX_CHECK_LINKER_FEATURES): Avoid 'head',
use sed script portable to Solaris /bin/sed for extracting ld
version.
* configure: Regenerate.
libgomp/:
* acinclude.m4 (LIBGOMP_CHECK_LINKER_FEATURES): Avoid 'head',
use sed script portable to Solaris /bin/sed for extracting ld
version.
* configure: Regenerate.