X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=fb1fccedef850abbbce473b3324401e7f4c24018;hp=e0f70c4884385c05dd531f25b1af15373e060387;hb=f5a023c5da2de25e6ee5c583c44825de7bf1a87c;hpb=442cf14550f48b8610c08293757dbb0f09fd0062 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e0f70c48843..fb1fccedef8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,939 @@ +2009-10-30 Richard Guenther + + PR lto/41858 + * lto-streamer.h (struct lto_file_decl_data): Remove fd member. + +2009-10-30 Nathan Sidwell + + * target-def.h (TARGET_ASM_TTYPE): Correct typo of TARGET_ARM_TTYPE. + * config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): Remove unused + label. + +2009-10-30 Martin Jambor + + * tree-sra.c (build_ref_for_offset_1): Remove a comment. + +2009-10-30 H.J. Lu + + PR target/40838 + * cfgexpand.c (expand_stack_alignment): Call update_stack_boundary + first. Move assert on stack_alignment_estimated just before + setting stack_realign_needed. + (gimple_expand_cfg): Initialize stack_alignment_estimated to 0. + Don't call update_stack_boundary. + + * config/i386/i386.c (ix86_minimum_incoming_stack_boundary): New. + (verride_options): Don't check ix86_force_align_arg_pointer here. + (ix86_function_ok_for_sibcall): Use it. + (ix86_update_stack_boundary): Likewise. + + * config/i386/i386.h (STACK_REALIGN_DEFAULT): Update comments. + +2009-10-30 Richard Earnshaw + + * arm.md (QHSI): New mode iterator. + (movqi): If generating for thumb, then truncate any immediate to + 8 bits. + * thumb2.md (thumb2_movsi_shortim and peephole2 generator): Replace + with... + (thumb2_mov_shortim and peephole2 generator): ... iterator based + version. + +2009-10-29 Cary Coutant + + PR debug/41700 + * dwarf2out.c (dwarf2_debug_hooks): Add entries for new hook (two + locations in the source). + (store_vcall_insn): New function. + (lookup_vcall_insn): New function. + (dwarf2out_virtual_call_token): Use store_vcall_insn. + (dwarf2out_copy_call_info): New function. + (dwarf2out_virtual_call): Use lookup_vcall_insn. + * emit-rtl.c (try_split): Call copy_call_info debug hook. + * debug.h (struct gcc_debug_hooks): Add copy_call_info hook. + * debug.c (do_nothing_debug_hooks): Add dummy entry for new hook. + (debug_nothing_rtx_rtx): New dummy hook. + * dbxout.c (dbx_debug_hooks): Add dummy entry for new hook. + (xcoff_debug_hooks): Likewise. + * sdbout.c (sdb_debug_hooks): Likewise. + * vmsdbgout.c (vmsdbg_debug_hooks): Likewise. + +2009-10-29 David Daney + + * doc/invoke.texi (mmcount-ra-address): Document new command line + option. + * config/mips/mips.opt (mmcount-ra-address): New option. + * config/mips/mips-protos.h (mips_function_profiler): Declare new + function. + * config/mips/mips.c (struct mips_frame_info): Add ra_fp_offset + member. + (mips_for_each_saved_gpr_and_fpr): Set ra_fp_offset. + (mips_function_profiler): Moved from FUNCTION_PROFILER, and + rewritten. + * config/mips/mips.h (FUNCTION_PROFILER): Body of macro moved to + mips_function_profiler. + +2009-10-29 Steve Ellcey + + PR middle-end/37565 + PR target/38018 + * doc/tm.texi (OVERRIDE_OPTIONS): Update. + (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New. + * optc-gen.awk (cl_target_option_restore): Include call to + targetm.override_options_after_change. + * target-def.h (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New. + * target.h (override_options_after_change): New. + * c-common.c (parse_optimize_options): Call + targetm.override_options_after_change. + * config/ia64/ia64.c (TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE): New. + (ia64_override_options_after_change): New. + (ia64_override_options) Add call to above. + +2009-10-29 Michael Matz + + * tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove. + (gate_convert_to_rsqrt): Ditto. + (pass_convert_to_rsqrt): Ditto. + * tree-pass.h (pass_convert_to_rsqrt): Don't declare. + * passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt + to pass list. + + * config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order. + +2009-10-29 Ramana Radhakrishnan + + * config/arm/arm.c (find_best_start): Fix type of remainder to be + unsigned . + +2009-10-29 Martin Jambor + + PR tree-optimization/41775 + * tree-sra.c (build_ref_for_offset): Unshare *expr if not NULL. + (generate_subtree_copies): Do not unshare agg. + (load_assign_lhs_subreplacements): Do not unshare rhs. + (sra_modify_assign): Do not unshare exprs. + (propagate_subacesses_accross_link): Renamed to + propagate_subaccesses_across_link. + +2009-10-29 Richard Earnshaw + + * arm.c (count_insns_for_constant): Rework to support counting for + thumb2 immediates as well. + (find_best_start): Split out from arm_gen_constant. + (arm_gen_constant): Rework to support XOR with immediate. + +2009-10-29 Chao-ying Fu + + * config/mips/mips.c (mips_emit_unary, mips_force_unary): New + functions. + (mips_expand_synci_loop): Use the length rtx to control the + synci loop from the begin rtx that points to the first byte of + the cache line. + +2009-10-28 Rafael Avila de Espindola + + * doc/invoke.texi: Rename -use-linker-plugin -fuse-linker-plugin. + +2009-10-28 Rafael Avila de Espindola + + * dbxout.c (dbxout_common_check): Accept non public trees. + * dwarf2out.c (fortran_common): Accept non public trees. + +2009-10-28 Rafael Avila de Espindola + + * common.opt (fuse-linker-plugin): New option. + * gcc.c (LINK_COMMAND_SPEC, main): Rename use-linker-plugin to + fuse-linker-plugin. + * opts.c (common_handle_option): Ignore OPT_fuse_linker_plugin. + +2009-10-28 Paolo Bonzini + + PR rtl-optimization/39715 + * config/arm/arm.md (cstoresi4): Use gen_cstoresi_ltu_thumb1. + (gen_cstoresi_ltu_thumb1): New splitter. + +2009-10-28 Richard Guenther + + PR lto/41808 + PR lto/41839 + * tree-ssa.c (useless_type_conversion_p): Do not treat + conversions to pointers to incomplete types as useless. + * gimple.c (gimple_types_compatible_p): Compare struct tags, + not typedef names. + +2009-10-28 Jakub Jelinek + + * var-tracking.c (emit_note_insn_var_location): Don't call the second + vt_expand_loc unnecessarily when location is not a register nor + memory. + + PR middle-end/41837 + * ipa-struct-reorg.c (find_field_in_struct_1): Return NULL if + fields don't have DECL_NAME. + + PR debug/41801 + * builtins.c (get_builtin_sync_mem): Expand loc in ptr_mode, + call convert_memory_address on addr. + + PR target/41762 + * config/i386/i386.c (ix86_pic_register_p): Don't call + rtx_equal_for_cselib_p for VALUEs discarded as useless. + +2009-10-28 Richard Sandiford + + * var-tracking.c (emit_note_insn_var_location): Get the mode of + a variable part from its REG, MEM or VALUE. + +2009-10-28 Richard Guenther + + * gimple.c (gimple_get_alias_set): Fix comment typo. + +2009-10-28 Richard Guenther + + * tree.c (free_lang_data_in_type): Do not call get_alias_set. + (free_lang_data): Unconditionally compute alias sets for all + standard integer types. Bail out if gate bailed out previously. + Do not reset the types_compatible_p langhook. + (gate_free_lang_data): Remove. + (struct pass_ipa_free_lang_data): Enable unconditionally. + * gimple.c (gimple_get_alias_set): Use the same alias-set for + all pointer types. + +2009-10-28 Richard Guenther + + PR middle-end/41855 + * tree-ssa-alias.c (refs_may_alias_p_1): Deal with CONST_DECLs + (ref_maybe_used_by_call_p_1): Fix bcopy handling. + (call_may_clobber_ref_p_1): Likewise. + * tree-ssa-structalias.c (find_func_aliases): Likewise. + * alias.c (nonoverlapping_memrefs_p): Deal with CONST_DECLs. + +2009-10-28 Paolo Bonzini + + PR rtl-optimization/41812 + + Revert: + 2009-06-27 Paolo Bonzini + + * df-problems.c (df_md_scratch): New. + (df_md_alloc, df_md_free): Allocate/free it. + (df_md_local_compute): Only include live registers in init. + (df_md_transfer_function): Prune the in-set computed by + the confluence function, and the gen-set too. + +2009-10-28 Paolo Bonzini + + PR rtl-optimization/39715 + * combine.c (simplify_comparison): Use extensions to + widen comparisons. Try an ANDing first. + +2009-10-28 Paolo Bonzini + + PR rtl-optimization/40741 + * config/arm/arm.c (thumb1_rtx_costs): IOR or XOR with + a small constant is cheap. + * config/arm/arm.md (andsi3, iorsi3): Try to place the result of + force_reg on the LHS. + (xorsi3): Likewise, and split the XOR if the constant is complex + and not in Thumb mode. + +2009-10-28 Paolo Bonzini + + * expmed.c (emit_store_flag): Check costs before + transforming to the opposite representation. + +2009-10-28 Paolo Bonzini + + * config/sh/sh.md (cbranchfp4_media): Remove hack extending + cstore result to DImode. + +2009-10-28 Kaz Kojima + + * config/sh/sh.md (stuff_delay_slot): Move const_int pattern + inside the unspec vector. + +2009-10-27 Richard Henderson + + * cgraphunit.c (cgraph_optimize): Maintain timevar stack properly. + +2009-10-27 Richard Henderson + + PR c++/41819 + * tree-eh.c (eh_region_may_contain_throw_map): Rename from + eh_region_may_contain_throw; update users. + (eh_region_may_contain_throw): New function. + (lower_catch): Check flag_exceptions before creating exception region. + (lower_eh_filter, lower_eh_must_not_throw): Likewise. + (lower_cleanup): Tidy existing flag_exceptions check to match. + +2009-10-27 Kai Tietz + + PR/41799 + * config/i386/mingw32.h (CHECK_EXECUTE_STACK_ENABLED): New macro. + * config/i386/mingw.opt: Add fset-stack-executable. + * config/i386/i386.c (ix86_trampoline_init): Make call to + emit_library_call conditional, if CHECK_EXECUTE_STACK_ENABLED is + defined and its value is not zero. + * doc/invoke.texi + +2009-10-27 Richard Guenther + + * tree-ssa-structalias.c (find_func_aliases): In IPA mode + handle calls to externally visible functions like in regular mode. + (create_variable_info_for): Do not create function infos here. + (have_alias_info): Remove write-only variable. + (solve_constraints): New function split out from common code + in compute_points_to_sets and ipa_pta_execute. + (compute_points_to_sets): Adjust. + (ipa_pta_execute): Likewise. Handle clones and externally visible + functions like in non-IPA mode. + +2009-10-27 Jakub Jelinek + + PR c/41842 + * c-typeck.c (convert_arguments): Return -1 if any of the arguments is + error_mark_node. + +2009-10-27 Richard Guenther + + * tree-complex.c (expand_complex_div_wide): Check for + INTEGER_CST, not TREE_CONSTANT on comparison folding result. + +2009-10-27 Revital Eres + + PR tree-optimization/40648 + * tree-vect-data-refs.c (vect_enhance_data_refs_alignment): + Change decision of when to peel for alignment. + +2009-10-27 Richard Guenther + + PR lto/41821 + * gimple.c (gimple_types_compatible_p): Handle OFFSET_TYPE. + +2009-10-27 Aldy Hernandez + + PR bootstrap/41451 + * fold-const.c (fold_binary_loc): Do not call + protected_set_expr_location. + +2009-10-27 Wei Guozhi + + PR target/41705 + * target.h (have_conditional_execution): Add a new target hook + function. + * target-def.h (TARGET_HAVE_CONDITIONAL_EXECUTION): Likewise. + * targhooks.h (default_have_conditional_execution): Likewise. + * targhooks.c (default_have_conditional_execution): Likewise. + * doc/tm.texi (TARGET_HAVE_CONDITIONAL_EXECUTION): Document it. + * config/arm/arm.c (TARGET_HAVE_CONDITIONAL_EXECUTION): Define it. + (arm_have_conditional_execution): New function. + * ifcvt.c (noce_process_if_block, find_if_header, + cond_exec_find_if_block, dead_or_predicable): Change the usage of + macro HAVE_conditional_execution to a target hook call. + * recog.c (peephole2_optimize): Likewise. + * sched-rgn.c (add_branch_dependences): Likewise. + * final.c (asm_insn_count, final_scan_insn): Likewise. + * bb-reorder.c (HAVE_conditional_execution): Remove it. + +2009-10-26 Ben Elliston + Michael Meissner + Ulrich Weigand + + * config.gcc (spu-*-elf*): Add spu_cache.h to extra_headers. + * config/spu/spu_cache.h: New file. + + * config/spu/cachemgr.c: New file. + * config/spu/cache.S: New file. + + * config/spu/spu.h (ASM_OUTPUT_SYMBOL_REF): Define. + (ADDR_SPACE_EA): Define. + (TARGET_ADDR_SPACE_KEYWORDS): Define. + * config/spu/spu.c (EAmode): New macro. + (TARGET_ADDR_SPACE_POINTER_MODE): Define. + (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. + (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Likewise. + (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. + (TARGET_ADDR_SPACE_SUBSET_P): Likewise. + (TARGET_ADDR_SPACE_CONVERT): Likewise. + (TARGET_ASM_SELECT_SECTION): Likewise. + (TARGET_ASM_UNIQUE_SECTION): Likewise. + (TARGET_ASM_UNALIGNED_SI_OP): Likewise. + (TARGET_ASM_ALIGNED_DI_OP): Likewise. + (ea_symbol_ref): New function. + (spu_legitimate_constant_p): Handle __ea qualified addresses. + (spu_addr_space_legitimate_address_p): New function. + (spu_addr_space_legitimize_address): Likewise. + (cache_fetch): New global. + (cache_fetch_dirty): Likewise. + (ea_alias_set): Likewise. + (ea_load_store): New function. + (ea_load_store_inline): Likewise. + (expand_ea_mem): Likewise. + (spu_expand_mov): Handle __ea qualified memory references. + (spu_addr_space_pointer_mode): New function. + (spu_addr_space_address_mode): Likewise. + (spu_addr_space_subset_p): Likewise. + (spu_addr_space_convert): Likewise. + (spu_section_type_flags): Handle "._ea" section. + (spu_select_section): New function. + (spu_unique_section): Likewise. + * config/spu/spu-c.c (spu_cpu_cpp_builtins): Support __EA32__ + and __EA64__ predefined macros. + * config/spu/spu-elf.h (LIB_SPEC): Handle -mcache-size= and + -matomic-updates switches. + + * config/spu/t-spu-elf (MULTILIB_OPTIONS): Define. + (EXTRA_MULTILIB_PARTS): Add libgcc_cachemgr.a, + libgcc_cachemgr_nonatomic.a, libgcc_cache8k.a, libgcc_cache16k.a, + libgcc_cache32k.a, libgcc_cache64k.a, libgcc_cache128k.a. + ($(T)cachemgr.o, $(T)cachemgr_nonatomic.o): New target. + ($(T)cache8k.o, $(T)cache16k.o, $(T)cache32k.o, $(T)cache64k.o, + $(T)cache128k.o): Likewise. + ($(T)libgcc_%.a): Likewise. + + * config/spu/spu.h (TARGET_DEFAULT): Add MASK_ADDRESS_SPACE_CONVERSION. + * config/spu/spu.opt (-mea32/-mea64): Add switches. + (-maddress-space-conversion): Likewise. + (-mcache-size=): Likewise. + (-matomic-updates): Likewise. + * doc/invoke.texi (-mea32/-mea64): Document. + (-maddress-space-conversion): Likewise. + (-mcache-size=): Likewise. + (-matomic-updates): Likewise. + +2009-10-26 Ben Elliston + Michael Meissner + Ulrich Weigand + + * doc/tm.texi (TARGET_ADDR_SPACE_KEYWORDS): Document. + + * c-common.c (c_common_reswords): If TARGET_ADDR_SPACE_KEYWORDS is + defined, add the named address space keywords. + (c_addr_space_name): New function. + (complete_array_type): Preserve named address space. + (handle_mode_attribute): Use targetm.addr_space.valid_pointer_mode + instead of targetm.valid_pointer_mode. + + * c-common.h (enum rid): Add RID_ADDR_SPACE_0 .. RID_ADDR_SPACE_15, + RID_FIRST_ADDR_SPACE and RID_LAST_ADDR_SPACE. + (ADDR_SPACE_KEYWORD): New macro. + (c_addr_space_name): Add prototype. + + * c-tree.h (struct c_declspecs): Add address_space member. + (declspecs_add_addrspace): Add prototype. + + * c-pretty-print.c (pp_c_type_qualifier_list): Handle address spaces. + + * c-parser.c (c_parse_init): Add assertion. + (typedef enum c_id_kind): Add C_ID_ADDRSPACE. + (c_lex_one_token): Handle address space keywords. + (c_token_starts_typename): Likewise. + (c_token_starts_declspecs): Likewise. + (c_parser_declspecs): Likewise. + (c_parser_postfix_expression_after_paren_type): Diagnose compound + literal within function qualified with named address space. + + * c-decl.c (diagnose_mismatched_decls): Diagnose conflicting named + address space qualifiers. + (shadow_tag_warned): Warn about useless address space qualifiers. + (quals_from_declspecs): Handle address space qualifiers. + (grokdeclarator): Likewise. + (build_null_declspecs): Likewise. + (declspecs_add_addrspace): New function. + + * c-typeck.c (addr_space_superset): New function. + (qualify_type): Handle named address spaces. + (composite_type): Likewise. + (common_pointer_type): Likewise. + (comp_target_types): Likewise. + (build_conditional_expr): Likewise. + (handle_warn_cast_qual): Likewise. + (build_c_cast): Likewise. + (convert_for_assignment): Likewise. + (build_binary_op): Likewise. + (pointer_diff): Handle named address spaces. Use intermediate + integer type of sufficient size if required. + +2009-10-26 Ben Elliston + Michael Meissner + Ulrich Weigand + + * doc/tm.texi (TARGET_ADDR_SPACE_POINTER_MODE): Document. + (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. + (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. + + * target.h (struct target_def): Add pointer_mode, address_mode, + and valid_pointer_mode to addr_space substructure. + * target-def.h (TARGET_ADDR_SPACE_POINTER_MODE): Define. + (TARGET_ADDR_SPACE_ADDRESS_MODE): Likewise. + (TARGET_ADDR_SPACE_VALID_POINTER_MODE): Likewise. + (TARGET_ADDR_SPACE_HOOKS): Add them. + * targhooks.c (target_default_pointer_address_modes_p): New function. + * target.h (target_default_pointer_address_modes_p): Add prototype. + * targhooks.c (default_addr_space_pointer_mode): New function. + (default_addr_space_address_mode): Likewise. + (default_addr_space_valid_pointer_mode): Likewise. + * targhooks.h (default_addr_space_pointer_mode): Add prototype. + (default_addr_space_address_mode): Likewise. + (default_addr_space_valid_pointer_mode): Likewise. + * output.h (default_valid_pointer_mode): Move to ... + * targhooks.h (default_valid_pointer_mode): ... here. + * varasm.c (default_valid_pointer_mode): Move to ... + * targhooks.c (default_valid_pointer_mode): ... here. + + * varasm.c (output_constant): Use targetm.addr_space.valid_pointer_mode + instead of targetm.valid_pointer_mode. + + * fold-const.c (fit_double_type): Use int_or_pointer_precision. + * tree.c (integer_pow2p): Likewise. + (tree_log2): Likewise. + (tree_floor_log2): Likewise. + (signed_or_unsigned_type_for): Support pointer type of different size. + (int_or_pointer_precision): New function. + * tree.h (int_or_pointer_precision): Add prototype. + * stor-layout.c (layout_type): Set TYPE_PRECISION for offset types. + * varasm.c (initializer_constant_valid_p): Use TYPE_PRECISION of + incoming pointer type instead of POINTER_SIZE. + + * tree.c (build_pointer_type): Use appropriate pointer mode + instead of ptr_mode. + (build_reference_type): Likewise. + * expr.c (store_expr): Likewise. + (expand_expr_addr_expr): Likewise. + * tree-vect-data-refs.c (vect_create_data_ref_ptr): Likewise. + * cfgexpand.c (expand_debug_expr): Likewise. + + * auto-inc-dec.c: Include "target.h". + (try_merge): Use appropriate address mode instead of Pmode. + (find_inc): Likewise. + * combine.c (find_split_point): Likewise. + * cselib.c (cselib_record_sets): Likewise. + * dse.c (replace_inc_dec): Likewise. + (canon_address): Likewise. + * var-tracking.c (replace_expr_with_values): Likewise. + (count_uses): Likewise. + (add_uses): Likewise. + (add_stores): Likewise. + * emit-rtl.c: Include "target.h". + (adjust_address_1): Use appropriate address mode instead of Pmode. + (offset_address): Likewise. + * explow.c (break_out_memory_refs): Likewise. + (memory_address_addr_space): Likewise. + (promote_mode): Likewise. + * expr.c (move_by_pieces): Likewise. + (emit_block_move_via_loop): Likewise. + (store_by_pieces): Likewise. + (store_by_pieces_1): Likewise. + (expand_assignment): Likewise. + (store_constructor): Likewise. + (expand_expr_addr_expr): Likewise. + (expand_expr_real_1): Likewise. + * cfgexpand.c (expand_debug_expr): Likewise. + * ifcvt.c (noce_try_cmove_arith): Likewise. + * regcprop.c (kill_autoinc_value): Likewise. + * regmove.c (try_auto_increment): Likewise. + * reload.c (find_reloads): Likewise. + (find_reloads_address): Likewise. + (find_reloads_address_1): Likewise. + * sched-deps.c: Include "target.h". + (sched_analyze_1): Use appropriate address mode instead of Pmode. + (sched_analyze_2): Likewise. + * sel-sched-dump.c: Include "target.h". + (debug_mem_addr_value): Use appropriate address mode instead of Pmode. + * stor-layout.c (layout_type): Likewise. + * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. + (multiplier_allowed_in_address_p): Likewise. + (get_address_cost): Likewise. + * varasm.c (make_decl_rtl): Likewise. + + * expr.c (expand_assignment): Always convert offsets to appropriate + address mode. + (store_expr): Likewise. + (store_constructor): Likewise. + (expand_expr_real_1): Likewise. + + * reload.h (form_sum): Add MODE argument. + * reload.c (form_sum): Add MODE argument, use it instead of Pmode. + Update recursive calls. + (subst_indexed_address): Update calls to form_sum. + + * tree-flow.h (addr_for_mem_ref): Add ADDRSPACE argument. + * tree-ssa-address.c: Include "target.h". + (templates): Replace by ... + (mem_addr_template_list): ... this new vector. + (TEMPL_IDX): Handle address space numbers. + (gen_addr_rtx): Add address mode argument, use it instead of Pmode. + (addr_for_mem_ref): Add ADDRSPACE argument. Use per-address-space + instead of global cache. Update call to gen_addr_rtx. + (valid_mem_ref_p): Update call to addr_for_mem_ref. + * expr.c (expand_expr_real_1): Update call to addr_for_mem_ref. + + * rtl.h (convert_memory_address_addr_space): Add prototype. + (convert_memory_address): Define as macro. + * explow.c (convert_memory_address): Rename to ... + (convert_memory_address_addr_space): ... this. Add ADDRSPACE argument. + Use appropriate pointer and address modes instead of ptr_mode / Pmode. + Update recursive calls. + (memory_address_addr_space): Call convert_memory_address_addr_space. + * expmed.c (make_tree): Likewise. + * expr.c (expand_assignment): Likewise. + (expand_expr_addr_expr_1): Likewise. Also, add ADDRSPACE argument. + (expand_expr_addr_expr): Likewise. Also, update call. + + * alias.c (find_base_value): Guard pointer size optimizations. + (find_base_term): Likewise. + * rtlanal.c (nonzero_bits1): Likewise. + (num_sign_bit_copies1): Likewise. + * simplify-rtx.c (simplify_unary_operation_1): Likewise. + + * Makefile.in (tree-ssa-address.o): Add $(TARGET_H) dependency. + (emit-rtl.o): Likewise. + (auto-inc-dec.o): Likewise. + (sched-deps.o): Likewise. + +2009-10-26 Ben Elliston + Michael Meissner + Ulrich Weigand + + * doc/extend.texi (Named Address Spaces): New section. + * coretypes.h (addr_space_t): New type. + (ADDR_SPACE_GENERIC): New define. + (ADDR_SPACE_GENERIC_P): New macro. + + * doc/tm.texi (Named Address Spaces): New section. + (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document. + (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document. + (TARGET_ADDR_SPACE_SUBSET_P): Document. + (TARGET_ADDR_SPACE_CONVERT): Document. + * target.h (struct gcc_target): Add addr_space substructure. + * target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define. + (TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise. + (TARGET_ADDR_SPACE_SUBSET_P): Likewise. + (TARGET_ADDR_SPACE_CONVERT): Likewise. + (TARGET_ADDR_SPACE_HOOKS): Likewise. + (TARGET_INITIALIZER): Initialize addr_space hooks. + * targhooks.c (default_addr_space_legitimate_address_p): New function. + (default_addr_space_legitimize_address): Likewise. + (default_addr_space_subset_p): Likewise. + (default_addr_space_convert): Likewise. + * targhooks.h (default_addr_space_legitimate_address_p): Add prototype. + (default_addr_space_legitimize_address): Likewise. + (default_addr_space_subset_p): Likewise. + (default_addr_space_convert): Likewise. + + * doc/rtl.texi (MEM_ADDR_SPACE): Document. + * rtl.h (mem_attrs): Add ADDRSPACE memory attribute. + (MEM_ADDR_SPACE): New macro. + * emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set + address space memory attribute. + (mem_attrs_htab_hash): Handle address space memory attribute. + (mem_attrs_htab_eq): Likewise. + (set_mem_attributes_minus_bitpos): Likewise. + (set_mem_alias_set): Likewise. + (set_mem_align): Likewise. + (set_mem_expr): Likewise. + (set_mem_offset): Likewise. + (set_mem_size): Likewise. + (adjust_address_1): Likewise. + (offset_address): Likewise. + (widen_memoy_address): Likewise. + (get_spill_slot_decl): Likewise. + (set_mem_attrs_for_spill): Likewise. + (set_mem_addr_space): New function. + * emit-rtl.h (set_mem_addr_space): Add prototype. + * print-rtl.c (print_rtx): Print address space memory attribute. + * expr.c (expand_assignment): Set address space memory attribute + of generated MEM RTXes as appropriate. + (expand_expr_real_1): Likewise. + * cfgexpand.c (expand_debug_expr): Likewise. + * tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise. + + * tree.h (struct tree_base): Add address_space bitfield. Reduce + size of "spare" bitfield. + (TYPE_ADDR_SPACE): New macro. + (ENCODE_QUAL_ADDR_SPACE): Likewise. + (DECODE_QUAL_ADDR_SPACE): Likewise. + (CLEAR_QUAL_ADDR_SPACE): Likewise. + (KEEP_QUAL_ADDR_SPACE): Likewise. + (TYPE_QUALS): Encode type address space. + (TYPE_QUALS_NO_ADDR_SPACE): New macro. + * tree.c (set_type_quals): Set type address space. + (build_array_type): Inherit array address space from element type. + * print-tree.c (print_node_brief): Print type address space. + (print_node): Likewise. + * tree-pretty-print.c (dump_generic_node): Likewise. + + * explow.c (memory_address): Rename to ... + (memory_address_addr_space): ... this. Add ADDRSPACE argument. + Use address-space aware variants of memory address routines. + * recog.c (memory_address_p): Rename to ... + (memory_address_addr_space_p): ... this. Add ADDSPACE argument. + Use address-space aware variants of memory address routines. + (offsettable_address_p): Rename to ... + (offsettable_address_addr_space_p): ... this. Add ADDRSPACE argument. + Use address-space aware variants of memory address routines. + * reload.c (strict_memory_address_p): Rename to ... + (strict_memory_address_addr_space_p): ... this. Add ADDSPACE argument. + Use address-space aware variants of memory address routines. + (maybe_memory_address_p): Rename to ... + (maybe_memory_address_addr_space_p): ... this. Add ADDSPACE argument. + Use address-space aware variants of memory address routines. + * expr.h (memory_address_addr_space): Add prototype. + (memory_address): Define as macro. + * recog.h (memory_address_addr_space_p): Add prototype. + (memory_address_p): Define as macro. + (offsettable_address_addr_space_p): Add prototype. + (offsettable_address_p): Define as macro. + (strict_memory_address_addr_space_p): Add prototype. + (strict_memory_address_p): Define as macro. + + * combine.c (find_split_point): Use address-space aware variants + of memory address routines. + * emit-rtl.c (operand_subword): Likewise. + (change_address_1): Likewise. + (adjust_address_1): Likewise. + (offset_address): Likewise. + * expr.c (emit_move_insn): Likewise. + (expand_assignment): Likewise. + (expand_expr_real_1): Likewise. + * recog.c (verify_changes): Likewise. + (general_operand): Likewise. + (offsettable_memref_p): Likewise. + (offsettable_nonstrict_memref_p): Likewise. + (constrain_operands): Likewise. + * reload.c (get_secondary_mem): Likewise. + (find_reloads_toplev): Likewise. + (find_reloads_address): Likewise. + (find_reloads_subreg_address): Likewise. + * reload1.c (reload): Likewise. + * rtlhooks.c (gen_lowpart_if_possible): Likewise. + * rtl.h (address_cost): Add ADDRSPACE argument. + * rtlanal.c (address_cost): Add ADDRSPACE argument. Use address-space + aware variant of memory address routines. + * loop-invariant.c (create_new_invariant): Update address_cost call. + * tree-ssa-loop-ivopts.c (computation_cost): Likewise. + * fwprop.c (should_replace_address): Add ADDRSPACE argument. + Use address-space aware variant of memory address routines. + (propagate_rtx_1): Update call to should_replace_address. + * tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE + argument. + * tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add + ADDRSPACE argument. Use per-address-space instead of global cache. + Use address-space aware variant of memory address routines. + (get_address_cost): Likewise. + (get_computation_cost_at): Update calls. + * tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument. + Use address-space aware variant of memory address routines. + (create_mem_ref_raw): Update call to valid_mem_ref_p. + (most_expensive_mult_to_index): Update call to + multiplier_allowed_in_address_p. + + * dwarf2out.c (modified_type_die): Output DW_AT_address_class + attribute to indicate named address spaces. + + * varasm.c (get_variable_section): DECLs in named address spaces + cannot be "common". + + * reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS + for addresses in a non-generic address space. + + * expr.c (emit_block_move_hints): Do not use libcalls for + memory in non-generic address spaces. + (clear_storage_hints): Likewise. + (expand_assignment): Likewise. + + * fold-const.c (operand_equal_p): Expressions refering to different + address spaces are not equivalent. + + * rtl.c (rtx_equal_p_cb): MEMs refering to different address + spaces are not equivalent. + (rtx_equal_p): Likewise. + * cse.c (exp_equiv_p): Likewise. + * jump.c (rtx_renumbered_equal_p): Likewise. + * reload.c (operands_match_p): Likewise. + + * alias.c (nonoverlapping_memrefs_p): MEMs refering to different + address spaces may alias. + (true_dependence): Likewise. + (canon_true_dependence): Likewise. + (write_dependence_p): Likewise. + + * dse.c (canon_address): Handle named address spaces. + * ifcvt.c (noce_try_cmove_arith): Likewise. + + * tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code. + * expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR. + * convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR + to handle conversions between different address spaces. + * fold-const.c (fold_convert_loc): Likewise. + (fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR. + * tree-pretty-print.c (dump_generic_node): Likewise. + * gimple-pretty-print.c (dump_unary_rhs): Likewise. + * tree-cfg.c (verify_gimple_assign_unary): Likewise. + * tree-inline.c (estimate_operator_cost): Likewise. + * tree-ssa.c (useless_type_conversion_p): Conversions between pointers + to different address spaces are not useless. + +2009-10-26 Jakub Jelinek + + PR bootstrap/41345 + * cfgcleanup.c (trivially_empty_bb_p): New function. + (try_optimize_bb): Use it instead of checking BB_HEAD == BB_END. + + PR debug/41828 + * dwarf2out.c (add_pubname, add_pubtype, generic_parameter_die, + add_name_and_src_coords_attributes, gen_namespace_die, + dwarf2out_set_name): Handle dwarf2_name returning NULL. + +2009-10-26 Nick Clifton + + * config.gcc: Add support for RX target. + * config/rx: New directory. + * config/rx/constraints.md: New file. + * config/rx/predicates.md: New file. + * config/rx/rx.c: New file. + * config/rx/rx.h: New file. + * config/rx/rx.md: New file. + * config/rx/rx.opt: New file. + * config/rx/rx-protos.h: New file. + * config/rx/t-rx: New file. + * doc/extend.texi: Document RX function attributes. + * doc/invoke.texi: Document RX specific command line options. + * doc/contrib.texi: Document RX contribution. + * doc/md.texi: Document RX constraints. + * doc/install.texi: Document RX support. + +2009-10-26 Michael Matz + + PR tree-optimization/41783 + * tree-ssa-alias.c (get_continuation_for_phi): Export, add a special + case for simple diamonds. + * tree-ssa-alias.h (get_continuation_for_phi): Declare. + * tree-ssa-pre.c (translate_vuse_through_block): Add same_valid + argument, use alias oracle to skip some vdefs. + (phi_translate_1): Change call to above, don't allocate new + value ids if they can stay the same. + (compute_avail): Allow vuse walking when looking up references. + +2009-10-26 Richard Guenther + + PR tree-optimization/41826 + * tree-ssa-structalias.c (get_constraint_for_ptr_offset): Avoid + access to re-allocated vector fields. + +2009-10-26 Richard Guenther + + * graphite-sese-to-poly.c (check_poly_representation): Fix + compile without checking. + +2009-10-26 Janus Weil + + PR fortran/41714 + * gimple.h (tree_annotate_all_with_location): Remove prototype. + * gimplify.c (tree_should_carry_location_p, + tree_annotate_one_with_location,tree_annotate_all_with_location): + Remove obsolete functions. + +2009-10-25 Kaz Kojima + + PR target/41813 + * config/sh/sh.md (stuff_delay_slot): Don't set T_REG in pattern. + +2009-10-25 Richard Guenther + + * lto-streamer-in.c (unpack_ts_decl_common_value_fields): + Stream DECL_RESTRICTED_P. + * lto-streamer-out.c (pack_ts_decl_common_value_fields): Likewise. + +2009-10-25 Richard Sandiford + + * config/mips/mips.c (mips_restore_gp_from_cprestore_slot): Emit + a note when expanding to nothing. + +2009-10-25 Richard Guenther + + PR middle-end/41814 + * tree.c (find_decls_types_r): Deal with Java overloading + BINFO_VIRTUALS for its own purpose. + +2009-10-24 Adam Nemet + + * config/mips/predicates.md (hilo_operand): New predicate. + * config/mips/mips.md (mulsidi3_64bit): Change it to a + define_insn. Correct !ISA_HAS_EXT_INS length from 24 to 28. Move + splitter part from here ...: + (mulsidi3_64bit splitter for !ISA_HAS_EXT_INS): ... to here. Swap + op0 and op4 to match the DINS case. + (mulsidi3_64bit splitter for ISA_HAS_EXT_INS): New splitter. + +2009-10-24 Andy Hutchinson + + PR middle-end/19154 + * avr.md (QIDI): Add new mode iterator. + (sbrx_branch): Create new zero extract bit, test and jump + patterns for all QI thru DI modes combinations. + (sbrx_and_branch): Create new and based bit test and jump + patterns for QI thru SI modes. + avr.c (avr_out_sbxx_branch): Use only bit number. + +2009-10-24 Jan Hubicka + + * ipa-reference.c (check_call): Noreturn notrhow calls do not write + to memory. + (analyze_function): When analyzing noreturn nothrow call, do not + compute written stats; free bitmaps of vars early if possible. + (generate_summary): Only update bitmaps if computed. + (propagate): Only dump bitmaps if computed. + (ipa_reference_read_summary): Fix pasto. + +2009-10-24 Eric Botcazou + + * tree-ssa-alias.c (nonaliasing_component_refs_p): Rename into... + (aliasing_component_refs_p): ...this. Return true if there is no + common base and the base access types have the same alias set. + (indirect_ref_may_alias_decl_p): Adjust for above renaming. + (indirect_refs_may_alias_p): Likewise. + +2009-10-23 Joseph Myers + + PR c/40033 + * c-typeck.c (c_finish_stmt_expr): Do not wrap error_mark_node in + a C_MAYBE_CONST_EXPR. + +2009-10-23 Michael Meissner + + PR target/41787 + * config/rs6000/rs6000.c (struct machine_function): Add + vsx_or_altivec_used_p to record if vector types are used. + (rs6000_expand_to_rtl_hook): Rename from + rs6000_alloc_sdmode_stack_slot. If VSX, check to see if there are + any vector operations, so if there are, we can set VRSAVE to + non-zero when only floating point vector registers are used. + (TARGET_EXPAND_TO_RTL_HOOK): Use rs6000_expand_to_rtl_hook. + (rs6000_check_vector_mode): Inner function to check if vector + types are used in the code. + (compute_vrsave_mask): If VSX, make sure VRSAVE is non-zero if + vector instructions are used. + + * config/rs6000/rs6000.h (HARD_REGNO_CALL_PART_CLOBBERED): + Indicate that VSX registers which overlap floating point + registers, can't be used across a call, since the ABI only states + the scalar part of the register will be saved and restored. + +2009-10-23 Joseph Myers + + PR c/41673 + * alias.c (get_alias_set): Call langhook before returning 0 for + types with structural equality. + * c-common.c (c_common_get_alias_set): Use alias set of element + type for arrays with structural comparison. + +2009-10-23 Richard Guenther + + PR middle-end/41805 + * cfgexpand.c (expand_call_stmt): Use gimple_has_side_effects and + gimple_call_nothrow_p. + 2009-10-23 Richard Guenther PR tree-optimization/41778 @@ -39,7 +975,7 @@ (m32c_function_value): Make static, add new 'outgoing' argument. (m32c_libcall_value): Make static, add new 'fun' argument. (TARGET_FUNCTION_VALUE, TARGET_LIBCALL_VALUE): Declare. - * config/m32c/m32c.h: (FUNCTION_VALUE, LIBCALL_VALUE): Remove. + * config/m32c/m32c.h (FUNCTION_VALUE, LIBCALL_VALUE): Remove. (FUNCTION_VALUE_REGNO_P): Redefine, use m32c_function_value_regno_p. * config/m32c/m32c-protos.h (m32c_function_value_regno_p): Declare. (m32c_function_value, m32c_libcall_value): Delete declaration. @@ -49,10 +985,7 @@ * Makefile.in (PLUGIN_HEADERS): Add output.h and IPA_UTILS_H. 2009-10-22 Razya Ladelsky - - * testsuite/gcc.dg/autopar/outer-4.c: Adjust scan. - * testsuite/gcc.dg/autopar/outer-5.c: Adjust scan. - * testsuite/gcc.dg/autopar/outer-5.c: Add scan optimized. + * tree-cfg.c (gimple_duplicate_sese_tail): Fix typos/indentation/white space. @@ -76,30 +1009,23 @@ * lto-streamer-in.c (lto_input_location): Likewise. 2009-10-22 Razya Ladelsky - - * cfgloopmanip.c (duplicate_subloops): Export. + + * cfgloopmanip.c (duplicate_subloops): Export. * tree-parloops.c (loop_parallel_p): Dump if loop is innermost. - (transform_to_exit_first_loop): Duplicate bbs starting from + (transform_to_exit_first_loop): Duplicate bbs starting from header up to loop->latch instead of exit->src. Initialize control variable to the correct number of iterations. (gather_scalar_reductions): Do not register double reductions. - (parallelize_loops): Dump which loop is tested. - Indicate whether the parallelized loop is inner or not. + (parallelize_loops): Dump which loop is tested. + Indicate whether the parallelized loop is inner or not. Remove the innermost-loop requirement. - * cfgloop.h (duplicate_subloops): Export. + * cfgloop.h (duplicate_subloops): Export. * tree-cfg.c (add_phi_args_after_redirect): New function. (gimple_duplicate_sese_tail): Remove the no-subloops constraint. Call duplicate_subloops. Update number of iterations at the exit condition. Don't redirect nexits always to the loop exit. Redirect copied edges from latch to the loop exit. - * testsuite/libgomp.graphite/force-parallel-2.c: Adjust scan. - * testsuite/gcc.dg/autopar/outer-1.c: New testcase. - * testsuite/gcc.dg/autopar/outer-2.c: New testcase. - * testsuite/gcc.dg/autopar/outer-3.c: New testcase. - * testsuite/gcc.dg/autopar/outer-4.c: New testcase. - * testsuite/gcc.dg/autopar/outer-5.c: New testcase. - * testsuite/gcc.dg/autopar/outer-6.c: New testcase. 2009-10-22 Jan Hubicka @@ -107,10 +1033,10 @@ flag_ltrans check. * ipa-inline.c (cgraph_mark_inline_edge, cgraph_decide_inlining_of_small_function, - cgraph_decide_inlining, inline_read_summary): Disable indirect inlining - for WPA for time being. + cgraph_decide_inlining, inline_read_summary): Disable indirect + inlining for WPA for time being. - PR tree-optimize/40556 + PR tree-optimize/40556 * ipa-inline.c (cgraph_early_inlining): Fix iterations condition. 2009-10-22 Richard Guenther @@ -130,8 +1056,8 @@ (ipa_reference_read_summary): Stream in calls_read_all properly. (read_write_all_from_decl): New function. (propagate): Handle OVERWRITABLE nodes and external calls here. - * ipa-pre-const.c (check_call): In IPA mode handle indirect calls - only. + * ipa-pre-const.c (check_call): In IPA mode handle indirect + calls only. (analyze_function): Do not check visibility here. (add_new_function): We summary OVERWRITABLE too. (generate_summary): Stream OVERWRITABLE nodes too. @@ -145,10 +1071,11 @@ (ipcp_init_stage): Analyze all functions for whopr/lto. (ipcp_propagate_stage): Skip external calls. (ipcp_iterate_stage): Call ipa_update_after_lto_read if needed. - * ipa-reference.c (write_node_summary_p): Fix thinko about availability. + * ipa-reference.c (write_node_summary_p): Fix thinko about + availability. * cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries; - when in ltrans, skip executing of ipa passes since everything should've - been done. + when in ltrans, skip executing of ipa passes since everything + should've been done. * ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs. (inline_generate_summary): Likewise. (inline_read_summary): New function. @@ -172,9 +1099,11 @@ (ipa_edge_args_vector): Move into GGC. (ipa_check_create_edge_args): Update. (ipa_update_after_lto_read): New. - * passes.c (ipa_write_summaries_1): When in wpa, do not write summaries. + * passes.c (ipa_write_summaries_1): When in wpa, do not write + summaries. (ipa_read_summaries): When in ltrans, so not read summaries. - * lto-streamer.c (lto_get_section_name): Add LTO_section_jump_functions. + * lto-streamer.c (lto_get_section_name): Add + LTO_section_jump_functions. * lto-streamer.h (LTO_section_jump_functions): New section. (produce_asm): Declare. * lto-cgraph.c (output_cgraph): Output edges in reverse order. @@ -197,7 +1126,7 @@ * config/ia64/ia64.c (ia64_override_options): Set flag_ira_loop_pressure up for -O3. * config/rs6000/rs6000.c (rs6000_override_options): Ditto. - + 2009-10-21 Sebastian Pop PR tree-optimization/41497 @@ -335,9 +1264,8 @@ 2009-10-20 Wolfgang Gellerich * config/s390/s390.md: Added agen condition to operand - forwarding bypasses. - Added bypass for early address generation use of int results. - Updated comments. + forwarding bypasses. Added bypass for early address generation + use of int results. Updated comments. 2009-10-20 Stefan Dösinger @@ -595,10 +1523,10 @@ PR target/23983 * config/rs6000/predicates.md: Update copyright year. * config/rs6000/altivec.md: Ditto. - + * config/rs6000/t-rs6000 (TM_H): Add rs6000-builtin.def. (MD_INCLUDES): Add a2.md. - + * config/rs6000/rs6000.c (rs6000_builtin_decls): Change RS6000_BUILTIN_COUNT to MAX_RS6000_BUILTINS. (builtin_classify): New static vector to classify various builtins @@ -678,7 +1606,7 @@ * config/arm/neon.md (neon_vshll_n): Checking Bounds fixed. 2009-10-14 DJ Delorie - + * config/h8300/h8300.c (F): New. (Fpa): New. (h8300_emit_stack_adjustment): Call them. @@ -771,7 +1699,7 @@ * doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs): Describe. * doc/tm.texi (STACK_REG_COVER_CLASS): Describe. - + 2009-10-14 Richard Guenther * lto-symtab.c (lto_symtab_compatible): Fold in ... @@ -9229,11 +10157,6 @@ * calls.c (emit_library_call_value_1): Update call to hard_libcall_value. * explow.c (hard_libcall_value): Use new target hook. - * testsuite/lib/target-supports.exp - (check_effective_target_arm_hard_vfp_ok): New hook. - (check_effective_target_arm_neon_ok): Improve test for neon - availability. - * testsuite/gcc.target/arm/eabi1.c: Only run test in base variant. * config/arm/arm.c: Include cgraph.h (TARGET_FUNCTION_VALUE): Override default hook. (arm_pcs_default): New variable. @@ -14339,7 +15262,6 @@ (OMP_CLAUSE_LOCATION): New macro. (struct tree_omp_clause): Add location field. (build_omp_clause): Add argument. - * testsuite/gcc.dg/gomp/for-1.c: Fix column. * cp/pt.c (tsubst_omp_for_iterator): Pass location to build_omp_clause. * cp/parser.c (cp_parser_omp_var_list_no_open): Same.