crtstuff.c (__do_global_dtors_aux): Use atexit if no fini or fini_array section.
[gcc.git] / gcc / ChangeLog
index 6a67828d7ae060e8733d78b74e91d15a15f82f63..89ccac0cbbd8d477ee4b447ac72eaee982336c62 100644 (file)
@@ -1,3 +1,364 @@
+2009-08-29  Douglas B Rupp  <rupp@gnat.com>
+
+       * crtstuff.c (__do_global_dtors_aux): Use atexit if no
+       fini or fini_array section.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_legal_transform_bb): Call
+       pbb_remove_duplicate_pdrs.
+       * graphite-poly.c (can_collapse_pdr): Removed.
+       (pdr_find_duplicate): Removed.
+       (can_collapse_pdrs): New.
+       (pbb_remove_duplicate_pdrs): New.
+       (new_poly_dr): Do not look for duplicates.
+       * graphite-poly.h (struct poly_bb): New field pdr_duplicates_removed.
+       (PBB_PDR_DUPLICATES_REMOVED): New.
+       (pbb_remove_duplicate_pdrs): Declared.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-interchange.c (pbb_interchange_profitable_p): Adjust
+       the strides by multiplying by PDR_NB_REFS.
+       * graphite-poly.c (can_collapse_pdr): New.
+       (pdr_find_duplicate): New.
+       (new_poly_dr): Call pdr_find_duplicate.  Collapse duplicate PDRs.
+       Initialize PDR_NB_REFS.
+       * graphite-poly.h (struct poly_dr): Add field nb_refs.
+       (PDR_NB_REFS): New.
+       (new_poly_dr): Number of subscripts is a graphite_dim_t.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       PR middle-end/40965
+       * graphite-poly.c (apply_poly_transforms): Remove legality test before
+       any transform.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (pddr_original_scattering): Return NULL
+       for read-read dependence relations.
+       * graphite-poly.h (enum poly_dr_type): Fix comment.
+       (pdr_read_p): New.
+       (pdr_write_p): New.
+       (pdr_may_write_p): New.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-poly.h (enum POLY_DR_TYPE): Renamed poly_dr_type.
+       (struct poly_dr): Same.
+       (new_poly_dr): Same.
+       * graphite-poly.c (new_poly_dr): Same.
+       * graphite-dependences.c (dot_deps): Disable call to system.
+
+2009-08-28  Cary Coutant  <ccoutant@google.com>
+
+       PR debug/41063
+       * dwarf2out.c (gen_type_die_with_usage): Use proper context for
+       struct/union/enum types local to a function.
+
+2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+           Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-blocking.c (pbb_strip_mine_loop_depth): Renamed
+       pbb_strip_mine_time_depth.  Changed the implementation so that
+       transformation is expressed as a transformation on
+       time (scatttering) dimensions.  Also, ensures that the 2d+1
+       scheduling format is preserved.
+       (pbb_strip_mine_profitable_p): Profitability is based on the
+       iteration number of a given time (scattering) dimension,
+       and not on a original loop depth dimension.
+       (pbb_strip_mine): Call pbb_number_of_iterations_at_time.
+       (pbb_do_strip_mine): Call psct_dynamic_dim.
+       * graphite-poly.c (pbb_number_of_iterations_at_time): New.
+       * graphite-poly.h (pbb_number_of_iterations_at_time): Declared.
+       (pbb_nb_dynamic_scattering_transform): New.
+       (psct_dynamic_dim): New.
+
+2009-08-28  Konrad Trifunovic  <konrad.trifunovic@gmail.com>
+
+       * graphite-ppl.c (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
+       * graphite-ppl.h (ppl_max_for_le): Renamed ppl_max_for_le_pointset.
+       * graphite-poly.c (pbb_number_of_iterations): Rename ppl_max_for_le.
+       * graphite-interchange.c (build_linearized_memory_access): Same.
+       (memory_stride_in_loop): Same.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (pddr_original_scattering): New.
+       (graphite_legal_transform_dr): Call pddr_original_scattering.
+       (dot_deps_1): New.
+       (dot_deps): New.
+       * graphite-dependences.h (dot_deps): Declared.
+       * graphite-poly.c (new_poly_dr): Initialize PDR_ID.
+       (print_pdr): Print PDR_ID.
+       * graphite-poly.h (struct poly_dr): Add field id.
+       (PDR_ID): New.
+       (pbb_index): New.
+       * graphite-scop-detection.c (dot_all_scops_1): Cleanup comment.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_carried_dependence_level_k): Do
+       not delete the original dependence relation.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (new_poly_dr_pair): Renamed new_poly_ddr.
+       (eq_poly_dr_pair_p): Renamed eq_poly_ddr_p.
+       (hash_poly_dr_pair_p): Renamed hash_poly_ddr_p.
+       (free_poly_ddr): New.
+       (pddr_is_empty): New.
+       (dependence_polyhedron_1): Now returns a poly_ddr_p.
+       (dependence_polyhedron): Same.  Remove useless gcc_assert.
+       Remove fprintfs.
+       (graphite_legal_transform_dr): Call pddr_is_empty and free_poly_ddr.
+       (graphite_carried_dependence_level_k): Call pddr_is_empty.
+       * graphite-dependences.h (enum poly_dependence_kind): New.
+       (poly_dr_pair): Renamed poly_ddr.  Added a field kind.
+       (PDRP_SOURCE): Renamed PDDR_SOURCE.
+       (PDRP_SINK): Renamed PDDR_SINK.
+       (PDRP_DDP): Renamed PDDR_DDP.
+       (PDDR_KIND): New.
+       (free_poly_ddr): Declared.
+       * graphite-poly.c (new_scop): Use the new hash function names.
+       * graphite-poly.h (struct scop): Renamed field original_pdr_pairs
+       into original_pddrs.
+       (SCOP_ORIGINAL_PDR_PAIRS): Renamed SCOP_ORIGINAL_PDDRS.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * cfgloopmanip.c (create_empty_loop_on_edge): Generate upper
+       bounds with LT_EXPR to make niter analysis more precise on code
+       generated by Graphite.
+
+2009-08-28  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-dependences.c (graphite_legal_transform_dr): Fix formatting.
+       (graphite_legal_transform_bb): Same.
+       (poly_drs_may_alias_p): Same.
+
+2009-08-28  Richard Guenther  <rguenther@suse.de>
+
+       * tree.def: Remove note about obsolete TYPE_NONCOPIED_PARTS.
+
+2009-08-28  Jan Beulich  <jbeulich@novell.com>
+
+       * config/i386/netware.c: Include langhooks.h.
+       (i386_nlm_encode_section_info): Simplify.
+       (netware_override_options): Delete.
+       * config/i386/netware.h (netware_override_options): Delete
+       declaration.
+       (OVERRIDE_OPTIONS): Delete definition.
+       (SUBTARGET_OVERRIDE_OPTIONS): Define.
+       (ASM_COMMENT_START): Define.
+       * config/i386/nwld.h (SUBSUBTARGET_OVERRIDE_OPTIONS): Define.
+
+2009-08-28  Jan Beulich  <jbeulich@novell.com>
+
+       * configure.ac: For in-tree ld, do a plain version check to
+       determine whether comdat groups are supported.
+       * configure: Regenerate.
+
+2009-08-28  Olivier Hainque  <hainque@adacore.com>
+
+       * collect2.c (DO_COLLECT_EXPORT_LIST): New internal macro,
+       always defined.  Reflect definition or absence of such for
+       COLLECT_EXPORT_LIST.  Readability helper.
+       (scanfilter): New enum, to help control what symbols
+       are to be considered or ignored by scan_prog_file.
+       (enum pass): Rename as "scanpass", moved together with scanfilter
+       prior to scan_prog_file's prototype.
+       (scan_prog_file): Accept and honor scanpass and scanfilter arguments.
+       Group prototype with the scanpass/scanfilter definitions, factorize
+       head comments for the several implementations at the prototype.
+       (main): Reorganize the first pass link control to let AIX
+       drag only the needed frame tables in executables.  Prevent
+       frame tables collection during the scan aimed at static ctors.
+       Pre-link and scan for frame tables later to compensate.
+       * doc/tm.texi (ASM_OUTPUT_DWARF_TABLE_REF): New macro.
+       A C statement to issue assembly directives that create a reference
+       to the given DWARF table identifier label from the current function
+       section.
+       * dwarf2out.c (switch_to_eh_frame_section): Add a BACK argument
+       to differentiate first time section entry.  Only emit a .data
+       tables start identifier label the first time around.
+       (switch_to_frame_table_section): New function.  Helper for
+       output_call_frame_info to switch possibly BACK into the eh_frame
+       or the debug_frame section depending on FOR_EH.
+       (output_call_frame_info): Use helper to first enter the proper
+       frame section.
+       (output_fde): Use ASM_OUTPUT_DWARF_TABLE_REF when defined to
+       emit a link to the frame table start label from each function
+       section.
+       * config/rs6000/rs6000.c (rs6000_aix_asm_output_dwarf_table_ref):
+       New function.  Implementation of ASM_OUTPUT_DWARF_TABLE_REF.
+       * config/rs6000/rs6000-protos.h: Declare it.
+       * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Define.
+
+2009-08-27  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * config/sh/sh.c (split_branches): Check the result of
+       next_active_insn.
+
+2009-08-27  Steve Ellcey  <sje@cup.hp.com>
+
+       * config/ia64/hpux.h (LIB_SPEC): Add -lrt for when
+       using -pthread -fopenmp
+
+2009-08-27  Gerald Pfeifer  <gerald@pfeifer.com>
+
+       * doc/service.texi (service directory): Update URL.
+
+2009-08-27  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR rtl-optimization/40861
+       * simplify-rtx.c (simplify_subreg): Do not call simplify_gen_subreg to
+       extract word from a multi-word subreg for negative byte positions.
+
+2009-08-27  Tristan Gingold  <gingold@adacore.com>
+           Douglas B Rupp  <rupp@gnat.com>
+
+       * config/ia64/ia64.c (ia64_attribute_table): Add "common_object" entry.
+       (SECTION_VMS_OVERLAY): Define.
+       (ia64_vms_common_object_attribute): Added.  Handle the "common_object"
+       attribute.
+       (ia64_vms_elf_asm_named_section): Added.  Generate .section pseudo-op
+       for common_object.
+       (ia64_vms_output_aligned_decl_common): Added.  Generate pseudo-op for
+       common_object declarations.
+       (ia64_section_type_flags): Set section flag for common_object.
+       * config/ia64/ia64-protos.h
+       (ia64_vms_output_aligned_decl_common): Declare.
+       (ia64_vms_elf_asm_named_section): Declare.
+
+2009-08-27  Michael Matz  <matz@suse.de>
+
+       * expr.c (expand_expr_real_2): New function taking exploded
+       unary or binary expression, split out from ...
+       (expand_expr_real_1): ... here.  Move over all unary/binary
+       switch parts to above function, in particular these codes:
+       PAREN_EXPR, NOP_EXPR, CONVERT_EXPR, POINTER_PLUS_EXPR, PLUS_EXPR,
+       MINUS_EXPR, MULT_EXPR, TRUNC_DIV_EXPR, FLOOR_DIV_EXPR, CEIL_DIV_EXPR,
+       ROUND_DIV_EXPR, EXACT_DIV_EXPR, RDIV_EXPR, TRUNC_MOD_EXPR,
+       FLOOR_MOD_EXPR, CEIL_MOD_EXPR, ROUND_MOD_EXPR, FIXED_CONVERT_EXPR,
+       FIX_TRUNC_EXPR, FLOAT_EXPR, NEGATE_EXPR, ABS_EXPR, MAX_EXPR, MIN_EXPR,
+       BIT_NOT_EXPR, TRUTH_AND_EXPR, BIT_AND_EXPR, TRUTH_OR_EXPR,
+       BIT_IOR_EXPR, TRUTH_XOR_EXPR, BIT_XOR_EXPR, LROTATE_EXPR, RROTATE_EXPR,
+       LSHIFT_EXPR, RSHIFT_EXPR, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
+       NE_EXPR, UNORDERED_EXPR, ORDERED_EXPR, UNLT_EXPR, UNLE_EXPR, UNGT_EXPR,
+       UNGE_EXPR, UNEQ_EXPR, LTGT_EXPR, TRUTH_NOT_EXPR, COMPLEX_EXPR,
+       WIDEN_SUM_EXPR, REDUC_MAX_EXPR, REDUC_MIN_EXPR, REDUC_PLUS_EXPR,
+       VEC_EXTRACT_EVEN_EXPR, VEC_EXTRACT_ODD_EXPR, VEC_INTERLEAVE_HIGH_EXPR,
+       VEC_INTERLEAVE_LOW_EXPR, VEC_LSHIFT_EXPR, VEC_RSHIFT_EXPR,
+       VEC_UNPACK_HI_EXPR, VEC_UNPACK_LO_EXPR, VEC_UNPACK_FLOAT_HI_EXPR,
+       VEC_UNPACK_FLOAT_LO_EXPR, VEC_WIDEN_MULT_HI_EXPR,
+       VEC_WIDEN_MULT_LO_EXPR, VEC_PACK_TRUNC_EXPR, VEC_PACK_SAT_EXPR,
+       VEC_PACK_FIX_TRUNC_EXPR.
+       (<case PAREN_EXPR>): Call set_mem_attributes() with type, not the
+       full expression.
+
+2009-08-27  Richard Guenther  <rguenther@suse.de>
+
+       * gengtype.c (main): Handle uint64_t.
+       * ipa-utils.c (get_base_var): Indent properly.
+       * tree-ssa-live.c (debug_scope_block): New function.
+       * tree-flow.h (debug_scope_block): Declare.
+       * tree-ssa-copy.c (replace_exp_1): Add vertical space.
+       * basic-block.h (enum profile_status): Rename to
+       enum profile_status_d.
+       (x_profile_status): Adjust type.
+
+2009-08-27  Dodji Seketeli  <dodji@redhat.com>
+
+       PR debug/41770
+       * dwarf2out.c (get_context_die): Declare this static function.
+       (gen_type_die_with_usage): Make sure a DIE is a generated for
+       the context of a typedef.
+
+2009-08-26  Anatoly Sokolov  <aesok@post.ru>
+
+       * doc/invoke.texi (AVR Options): Remove documentation of -minit-stack
+       switch.
+
+2009-08-26  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       * config/mips/mips-protos.h (mips_output_sync): Declare.
+       (mips_sync_loop_insns): Likewise.
+       (mips_output_sync_loop): Replace first two parameters with an rtx.
+       * config/mips/mips.c (mips_multi_member): New structure.
+       (mips_multi_members): New variable.
+       (mips_multi_start): New function.
+       (mips_multi_add): Likewise.
+       (mips_multi_add_insn): Likewise.
+       (mips_multi_add_label): Likewise.
+       (mips_multi_last_index): Likewise.
+       (mips_multi_copy_insn): Likewise.
+       (mips_multi_set_operand): Likewise.
+       (mips_multi_write): Likewise.
+       (mips_print_operand_punctuation): Remove '%|' and '%-'.
+       (mips_init_print_operand_punct): Update accordingly.
+       (mips_start_ll_sc_sync_block): New function.
+       (mips_end_ll_sc_sync_block): Likewise.
+       (mips_output_sync): Likewise.
+       (mips_sync_insn1_template): Likewise.
+       (mips_sync_insn2_template): Likewise.
+       (mips_get_sync_operand): Likewise.
+       (mips_process_sync_loop): Likewise.
+       (mips_output_sync_loop): Use mips_process_sync_loop.
+       (mips_sync_loop_insns): New function.
+       * config/mips/mips.h (MIPS_COMPARE_AND_SWAP): Delete.
+       (MIPS_COMPARE_AND_SWAP_12): Likewise.
+       (MIPS_COMPARE_AND_SWAP_12_ZERO_OP): Likewise.
+       (MIPS_COMPARE_AND_SWAP_12_NONZERO_OP): Likewise.
+       (MIPS_SYNC_OP, MIPS_SYNC_OP_12): Likewise.
+       (MIPS_SYNC_OP_12_AND, MIPS_SYNC_OP_12_XOR): Likewise.
+       (MIPS_SYNC_OLD_OP_12): Likewise.
+       (MIPS_SYNC_OLD_OP_12_AND, MIPS_SYNC_OLD_OP_12_XOR): Likewise.
+       (MIPS_SYNC_NEW_OP_12): Likewise.
+       (MIPS_SYNC_NEW_OP_12_AND, MIPS_SYNC_NEW_OP_12_XOR): Likewise.
+       (MIPS_SYNC_OLD_OP, MIPS_SYNC_NEW_OP): Likewise.
+       (MIPS_SYNC_NAND, MIPS_SYNC_OLD_NAND, MIPS_SYNC_NEW_NAND): Likewise.
+       (MIPS_SYNC_EXCHANGE, MIPS_SYNC_EXCHANGE_12): Likewise.
+       (MIPS_SYNC_EXCHANGE_12_ZERO_OP): Likewise.
+       (MIPS_SYNC_EXCHANGE_12_NONZER_OP): Likewise.
+       * config/mips/mips.md (sync_mem): New attribute.
+       (sync_oldval, sync_newval, sync_inclusive_mask): Likewise.
+       (sync_exclusive_mask, sync_required_oldval): Likewise.
+       (sync_insn1_op2, sync_insn1, sync_insn2): Likewise.
+       (sync_release_barrier): Likewise.
+       (length): Handle sync loops.
+       (sync): Use mips_output_sync.
+       * config/mips/sync.md (*memory_barrier): Use mips_output_sync.
+       (sync_compare_and_swap<mode>): Set the new sync_* attributes
+       and use mips_output_sync_loop.
+       (compare_and_swap_12, sync_add<mode>, sync_<optab>_12): Likewise.
+       (sync_old_<optab>_12, sync_new_<optab>_12, sync_nand_12): Likewise.
+       (sync_old_nand_12, sync_new_nand_12, sync_sub<mode>): Likewise.
+       (sync_old_add<mode>, sync_old_sub<mode>): Likewise.
+       (sync_new_add<mode>, sync_new_sub<mode>): Likewise.
+       (sync_<optab><mode>, sync_old_<optab><mode>): Likewise.
+       (sync_new_<optab><mode>, sync_nand<mode>): Likewise.
+       (sync_old_nand<mode>, sync_new_nand<mode>): Likewise.
+       (sync_lock_test_and_set<mode>, test_and_set_12): Likewise.
+
+2009-08-26  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/41163
+       * gimplify.c (gimplify_addr_expr): Canonicalize ADDR_EXPRs if
+       the types to not match.
+       * tree-cfg.c (verify_gimple_assign_single): Adjust ADDR_EXPR
+       verification.
+       * tree-ssa.c (useless_type_conversion_p): Conversions to
+       pointers to unprototyped functions are useless.
+
+2009-08-26  Richard Guenther  <rguenther@suse.de>
+
+       * tree-ssa-structalias.c (create_variable_info_for): Remove
+       strange whole-program condition, prepare to be called for non-globals.
+       (intra_create_variable_infos): For restrict qualified DECL_BY_REFERENCE
+       params build a representative with known type and track its fields.
+
 2009-08-26  Uros Bizjak  <ubizjak@gmail.com>
 
        * config/alpha/sync.md: Update comment about unpredictable LL/SC lock
        (sse_maskcmpv4sf3): Disable if SSE5.
        (sse_maskcmpv2df3): Ditto.
        (sse_vmmaskcmpv4sf3): Ditto.
-       (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add
-       instructions.
+       (sse5_fmadd<mode>4): Add SSE5 floating point multiply/add instructions.
        (sse5_vmfmadd<mode>4): Ditto.
        (sse5_fmsub<mode>4): Ditto.
        (sse5_vmfmsub<mode>4): Ditto.