X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2FChangeLog;h=2195e4154a2916d460df2c5ea4dd46cf3348b77a;hp=2f6576bc33e805c317d3a8c2b9e2080eb63ea46d;hb=a3dadcdea63dfb7f7543a26ee101f6ddde1c3b5a;hpb=727a2c40983fa2885a0f7c95807e42002f19297b diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2f6576bc33e..2195e4154a2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,796 @@ +2007-06-21 H.J. Lu + + * config/i386/i386.c (processor_target_table): Increase maximum + skip from 7 byte to 10 byte for Pentium Pro, Core 2 Duo and + default 64bit. + + * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Ensure 8 + byte alignment if > 8 byte alignment is preferred. + * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. + +2007-06-21 Jakub Jelinek + + PR tree-optimization/31866 + * tree-ssa-coalesce.c (create_outofssa_var_map): Do nothing + if ASM_EXPR's input is not a SSA_NAME. + + PR middle-end/32362 + * omp-low.c (lookup_decl_in_outer_ctx): Don't ICE if t is NULL, + but decl is a global var, instead return decl. + * gimplify.c (gimplify_adjust_omp_clauses_1): Add shared clauses + even for is_global_var decls, if they are private in some outer + context. + +2007-06-21 Richard Guenther + + PR tree-optimization/32451 + * tree-ssa-threadupdate.c (thread_single_edge): Fixup edge flags. + +2007-06-21 Christian Bruel + + * config/sh/sh-protos.h (sh_loads_bankedreg_p): Declare. + * config/sh/sh.c (sh_loads_bankedreg_p): New function. + (push_regs): Changed saving order or banked registers. + (sh_expand_epilogue): Likewise. + * config/sh/sh.h (BANKED_REGISTER_P): New macro. + (FIRST_BANKED_REG): Likewise. + (LAST_BANKED_REG): Likewise. + * config/sh/sh.md (banked) New attribute. + (in_delay_slot): Check banked attribute. + +2007-06-20 Sebastian Pop + + PR tree-optimization/32075 + * tree-data-ref.c (subscript_dependence_tester_1, + analyze_miv_subscript, analyze_overlapping_iterations, + add_distance_for_zero_overlaps, build_classic_dist_vector, + subscript_dependence_tester_1, analyze_overlapping_iterations, + subscript_dependence_tester, access_functions_are_affine_or_constant_p, + compute_affine_dependence, compute_all_dependences): Pass loop_nest + to evolution_function_is_affine_multivariate_p. + +2007-06-20 Eric Botcazou + + * df-scan.c (df_get_call_refs): Be prepared for MEMs inside CLOBBERs. + +2007-06-20 Rask Ingemann Lambertsen + + PR target/32335 + * config/m32c/m32c.c (m32c_emit_epilogue): Use new HImode epilogue + for TARGET_A16. + * config/m32c/prologue.md (epilogue_exitd_16): New. + (epilogue_reit_16): New. + (epilogue_exitd): Rename to epilogue_exitd_24. + (epilogue_reit): Rename to epilogue_reit_24. + +2007-06-20 Seongbae Park + Maxim Kuvyrkov + + * dbgcnt.def (global_alloc_at_func, global_alloc_at_reg): + New counters. + * haifa-sched.c (queue_to_ready): Don't requeue next insn + if dbg_cnt (sched_insn) reaches the limit. + (choose_ready): New parameter INSN_PTR and new return value. + (schedule_block): Handle dbg_cnt (sched_insn). Handle + the new return value from choose_ready. + * global.c (global_aloc): New dbgcnt global_alloc_at_reg. + (rest_of_handle_global_alloc): New global_alloc_at_func. + +2007-06-20 Adam Nemet + + PR tree-optimization/25737 + * tree.h (struct tree_struct_field_tag): Add new field alias_set. + (SFT_NONADDRESSABLE_P, SFT_ALIAS_SET): New macros. + * tree-flow.h (struct fieldoff): Add new field alias_set. + * tree-ssa-structalias.c (push_fields_onto_fieldstack): Add new + argument addressable_type. Set alias_set of fieldoff. + * tree-ssa-alias.c (create_sft): Add new argument alias_set. + (create_overlap_variables_for): Pass alias_set from fieldoff to + create_sft. + * alias.c (get_alias_set): Use alias_set from SFT if set. + +2007-06-20 Hui-May Chang + + * config/i386/darwin.h (ASM_OUTPUT_COMMON): Print the size + of a variable as an unsigned HOST_WIDE_INT integer. + +2007-06-20 Zdenek Dvorak + + PR rtl-optimization/32405 + * loop-iv.c (iv_get_reaching_def): Fail for partial defs. + +2007-06-20 Jakub Jelinek + + * Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H). + + PR middle-end/31959 + * builtins.c: Include diagnostic.h. + (expand_builtin_expect): Make gcc_assert more permissive. + * Makefile.in (builtins.o): Depend on $(DIAGNOSTIC_H). + + PR inline-asm/32109 + * gimplify.c (gimplify_asm_expr): Issue error if type is addressable + and !allows_mem. + + PR middle-end/32285 + * calls.c (precompute_arguments): Also precompute CALL_EXPR arguments + if ACCUMULATE_OUTGOING_ARGS. + +2007-06-19 Rask Ingemann Lambertsen + + * config/m68hc11/m68hc11.c: Include dataflow header file. + (m68hc11_reorg): Port to dataflow. + +2007-06-19 Kenneth Zadeck + + * df.h (DF_FIRST_OPTIONAL_PROBLEM): Removed. + (struct df_problem.free_blocks_on_set_blocks): New field. + (struct dataflow.optional_p): New field. + (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed. + (df_live_set_all_dirty): New function. + * df-scan.c (df_scan_alloc): Initialize optional_p. + (problem_SCAN): Initialize free_blocks_on_set_blocks. + * df-core.c (df_set_blocks): Removed use of + DF_FIRST_OPTIONAL_PROBLEM. Now uses + df_problem.free_blocks_on_set_blocks to determine which blocks are + recycled. + (df_remove_problem): Removed use of DF_FIRST_OPTIONAL_PROBLEM. + (df_finish_pass): Removed use of DF_FIRST_OPTIONAL_PROBLEM. Now + uses dataflow.optional_p to determine if problem should be + deleted. + (rest_of_handle_df_initialize): Only start live problem if + -02 or above. + (df_bb_regno_last_use_find, df_insn_regno_def_p): Removed. + * df-problems.c (df_ru_alloc, df_rd_alloc, df_lr_alloc, + df_live_alloc, df_urec_alloc, df_note_alloc): set optional_p. + (problem_RU, problem_RD, problem_LR, problem_UREC, problem_CHAIN, + problem_NOTE): Initialize free_blocks_on_set_blocks. + (df_lr_bb_local_compute): Recompute luids if df_live problem is + not active. + (df_live_set_all_dirty, df_note_alloc): New function. + * regrename.c (merge_overlapping_regs): Change DF_LIVE_* to + df_get_live_*. + * sched_ebb.c (compute_jump_reg_dependencies): Ditto. + * postreload.c (reload_combine): Ditto. + * cse.c (cse_extended_basic_block): Ditto. + * regmove.c (mark_flags_life_zones): Ditto. + * rtlfactoring.c (split_blocks_after_seqs, split_pattern_seq, + erase_matching_seqs): Ditto. + * bt-load.c (compute_defs_uses_and_gen): Ditto. + * integrate (allocate_initial_values): Ditto. + * combine.c (reg_dead_at_p): Ditto. + * resource.c (mark_target_live_regs): Ditto. + * sched-rgn.c (check_live_1, update_live_1): Ditto. + * config/sh/sh.c (find_r0_life_regions): Ditto. + * global.c (rest_of_handle_global_alloc): Only add back df_live + for -O > 1. + * local-alloc.c (rest_of_handle_local_alloc): Only remove + df_live for -O > 1. + * ifcvt.c (dead_or_predicable): Change DF_LIVE_* to + df_get_live_*. + (if_convert): Make sure df_live is there at -O == 1. + (pass_if_after_combine): Cleanup flags. + * init-regs.c (initialize_uninitialized_regs): Make sure df_live + is there at -O == 1. + +2007-06-19 Seongbae Park + + * config/arm/arm.c (arm_get_frame_offsets): Set + offsets->locals_base to avoid negative stack size. + (thumb1_expand_prologue): Assert on negative stack size. + +2007-04-19 Sebastian Pop + + PR tree-optimization/32367 + * tree-chrec.h (build_polynomial_chrec): Verify that the left hand side + of the chrec has no evolution in that loop. + * testsuite/gcc.dg/tree-ssa/pr32367.c: New. + +2007-06-19 Bob Wilson + + * config/xtensa/xtensa.c: Include "df.h". + (xtensa_builtin_saveregs): Use adjust_address instead of change_address. + (xtensa_va_start): Invoke make_tree with sizetype for + expand_builtin_saveregs and then convert the result to a pointer. + Use POINTER_PLUS_EXPR. Use size_int instead of build_int_cst. + (xtensa_gimplify_va_arg_expr): Use size_int instead of build_int_cst. + Subtract argument size from index value as integers and then use + POINTER_PLUS_EXPR to add the result to the array address. + +2007-06-19 Rask Ingemann Lambertsen + + PR target/32335 + * config/m32c/m32c.c: Include dataflow header file. + (m32c_emit_prologue): Adjust for prologue insn change. + * config/m32c/prologue.md (prologue_enter_16): Only modify SP_REGNO + once inside a PARALLEL. Assume frame size passed in operand 0 + includes space to save the fb register. + (prologue_enter_24): Likewise. + (epilogue_exitd): Only modify SP_REGNO once inside a PARALLEL. + +2007-06-19 David Daney + + PR target/32369 + * config/frv/frv.c (frv_ifcvt_modify_tests): Dataflow merge fix. + (frv_ifcvt_modify_insn): Likewise. + +2007-06-19 Richard Guenther + + * tree-ssa-structalias.c (handle_ptr_arith): Make sure to + only handle positive offsets that fit in a HOST_WIDE_INT. + +2007-06-19 Uros Bizjak + + * config/i386/i386.c (ix86_emit_swsqrtsf): Filter out infinity + result of rsqrt insn for zero input argument to avoid NaN. + +2007-06-19 Richard Guenther + + PR middle-end/31950 + * tree-ssa-alias-warnings.c (ffan_walker): Punt on MTAGs. + +2007-06-19 Jakub Jelinek + + PR tree-optimization/32353 + * tree-ssa-structalias.c (set_uids_in_ptset): Also handle RESULT_DECL. + +2007-06-19 Nick Clifton + + * config/m32r/linux.h (LIB_SPEC): Always imply -lpthread for + -pthread. + +2007-06-18 Uros Bizjak + + PR target/32389 + * config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL. + * config/i386/i386.c (assign_386_stack_local): Assert that + SLOT_VIRTUAL is valid only before virtual regs are instantiated. + (ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]: + Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP. + * config/i386/i386.md (truncdfsf2, truncxf2): Ditto. + +2007-06-18 Steve Ellcey + + * config/ia64/ia64.h (LIBGCC2_TF_CEXT): New. + +2007-06-18 Seongbae Park + + PR rtl-optimization/32321 + * gcse.c (replace_store_insn): Update the note before + calling emit_insn_after. + +2007-06-18 David Daney + + PR middle-end/32355 + * gcse (rest_of_handle_gcse): Add call to df_finish_pass after + cse_main. + * df-problems.c (df_note_bb_compute): Fix dumping info. + +2007-06-18 Kazu Hirata + + * config/m68k/m68k.c (m68k_expand_epilogue): Emit a return + insn with emit_jump_insn. + +2007-06-18 Uros Bizjak + + PR tree-optimization/32383 + * targhooks.c (default_builtin_reciprocal): Add new bool argument. + * targhooks.h (default_builtin_reciprocal): Update prototype. + * target.h (struct gcc_target): Update builtin_reciprocal. + * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Update description. + * tree-ssa-math-opts (execute_cse_reciprocals): Skip statements + where arg1 is not SSA_NAME. Pass true to targetm.builtin_reciprocal + when fndecl is in BUILT_IN_MD class. + (execute_convert_to_rsqrt): Ditto. + + * config/i386/i386.c (ix86_builtin_reciprocal): Update for new bool + argument. Convert IX86_BUILTIN_SQRTPS code only when md_fn is true. + Convert BUILT_IN_SQRTF code only when md_fn is false. + +2007-06-18 Kaz Kojima + + * bt-load.c (move_btr_def): Fix the order of arguments + to validate_replace_rtx. + +2007-06-18 Nathan Sidwell + + * config/m68k/m68k-devices.def: Add 54450..54455. + +2007-06-17 Uros Bizjak + + PR rtl-optimization/32366 + * simplify-rtx.c (simplify_unary_operation_1) [FLOAT_TRUNCATE, + FLOAT_EXTEND]: Prevent non-scalar modes from entering + significand_size. + +2007-06-17 Kenneth Zadeck + + PR middle-end/32349 + * modulo-sched (generate_reg_moves): Added rescan parameter and if + this is true, rescan insn being modified. + (sms_schedule): Added rescan parameter. + (rest_of_handle_sms): Moved freeing of dominance info to before + getting out of cfg_layout. + +2007-06-17 Nathan Sidwell + + * config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New. + * config/m68k/m68k.md: Use ISA_HAS_FF1 and ISA_HAS_MVS_MVZ as + appropriate. + + * config/m68k/m68k.c (all_isas): Remove FL_CF_FPU and + FL_CF_EMAC from the entry for isac. + + * config/m68k/predicates.md (const_call_operand): Adjust comment. + (const_sibcall_operand): New. + (sibcall_operand): Use it. + * config/m68k/m68k.c (FL_FOR_isa_c): Not ISA_B compatible. + (m68k_isas): ISAC does not imply FPU or EMAC. + (override_options): Add ISA_C logic for symbolic jump & call. + +2007-06-17 Eric Botcazou + + * config/sparc/sparc.c (sparc_vis_init_builtins): Retrieve the + return mode from the builtin itself. + (sparc_fold_builtin): Fix cast of zero constant. + +2007-06-16 Uros Bizjak + + * targhooks.c (default_builtin_reciprocal): New default target hook. + * targhooks.h (default_builtin_reciprocal): Add prototype. + * hooks.c (hook_tree_tree_bool_null): Remove hook. + * hooks.h (hook_tree_tree_bool_null): Remove prototype. + * target-def.h (TARGET_BUILTIN_RECIPROCAL): Define as + default_builtin_reciprocal. + +2007-06-16 Uros Bizjak + + PR middle-end/31723 + * hooks.c (hook_tree_tree_bool_null): New hook. + * hooks.h (hook_tree_tree_bool_null): Add prototype. + * tree-pass.h (pass_convert_to_rsqrt): Declare. + * passes.c (init_optimization_passes): Add pass_convert_to_rsqrt. + * tree-ssa-math-opts.c (execute_cse_reciprocals): Scan for a/func(b) + and convert it to reciprocal a*rfunc(b). + (execute_convert_to_rsqrt): New function. + (gate_convert_to_rsqrt): New function. + (pass_convert_to_rsqrt): New pass definition. + * target.h (struct gcc_target): Add builtin_reciprocal. + * target-def.h (TARGET_BUILTIN_RECIPROCAL): New define. + (TARGET_INITIALIZER): Initialize builtin_reciprocal with + TARGET_BUILTIN_RECIPROCAL. + * doc/tm.texi (TARGET_BUILTIN_RECIPROCAL): Document. + + * config/i386/i386.h (TARGET_RECIP): New define. + * config/i386/i386.md (divsf3): Expand by calling ix86_emit_swdivsf + for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and + flag_unsafe_math_optimizations are set, flag_trapping_math is unset + and not optimizing for size. + (*rcpsf2_sse): New insn pattern. + (*rsqrtsf2_sse): Ditto. + (rsqrtsf2): New expander. Expand by calling ix86_emit_swsqrtsf + for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and + flag_unsafe_math_optimizations are set, flag_trapping_math is unset + and not optimizing for size. + (sqrt2): Expand SFmode operands by calling ix86_emit_swsqrtsf + for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and + flag_unsafe_math_optimizations are set, flag_trapping_math is unset + and not optimizing for size. + * config/i386/sse.md (divv4sf): Expand by calling ix86_emit_swdivsf + for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and + flag_unsafe_math_optimizations are set, flag_trapping_math is unset + and not optimizing for size. + (*sse_rsqrtv4sf2): Do not export. + (sqrtv4sf2): Ditto. + (sse_rsqrtv4sf2): New expander. Expand by calling ix86_emit_swsqrtsf + for TARGET_SSE_MATH and TARGET_RECIP when flag_finite_math_only and + flag_unsafe_math_optimizations are set, flag_trapping_math is unset + and not optimizing for size. + (sqrtv4sf2): Ditto. + * config/i386/i386.opt (mrecip): New option. + * config/i386/i386-protos.h (ix86_emit_swdivsf): Declare. + (ix86_emit_swsqrtsf): Ditto. + * config/i386/i386.c (IX86_BUILTIN_RSQRTF): New constant. + (ix86_init_mmx_sse_builtins): __builtin_ia32_rsqrtf: New + builtin definition. + (ix86_expand_builtin): Expand IX86_BUILTIN_RSQRTF using + ix86_expand_unop1_builtin. + (ix86_emit_swdivsf): New function. + (ix86_emit_swsqrtsf): Ditto. + (ix86_builtin_reciprocal): New function. + (TARGET_BUILTIN_RECIPROCAL): Use it. + (ix86_vectorize_builtin_conversion): Rename from + ix86_builtin_conversion. + (TARGET_VECTORIZE_BUILTIN_CONVERSION): Use renamed function. + * doc/invoke.texi (Machine Dependent Options): Add -mrecip to + "i386 and x86_64 Options" section. + (Intel 386 and AMD x86_64 Options): Document -mrecip. + +2007-06-15 Andrew Pinski + Zdenek Dvorak + Richard Guenther + Kaz Kojima + + * tree-vrp.c (compare_values_warnv): Convert val2 to + the type of val1. + (extract_range_from_assert): Create + POINTER_PLUS_EXPR for pointer types. + (extract_range_from_binary_expr): Handle + only POINTER_PLUS_EXPR, MIN_EXPR, and MAX_EXPR + for pointer types. + * doc/c-tree.texi (POINTER_PLUS_EXPR): Document. + * tree-ssa-loop-niter.c (split_to_var_and_offset): Handle + POINTER_PLUS_EXPR as PLUS_EXPR. + (number_of_iterations_lt_to_ne): + For pointer types, use sizetype when + creating MINUS_EXPR/PLUS_EXPRs. + (assert_loop_rolls_lt): For pointer types, use sizetype when + creating MINUS_EXPR/PLUS_EXPRs. + (number_of_iterations_le): Likewise. + (expand_simple_operations): POINTER_PLUS_EXPR are simple also. + (derive_constant_upper_bound): Handle POINTER_PLUS_EXPR just + like PLUS_EXPR and MINUS_EXPR. + * tree-pretty-print.c (dump_generic_node): Handle + POINTER_PLUS_EXPR. + (op_prio): Likewise. + (op_symbol_1): Likewise. + * optabs.c (optab_for_tree_code): Likewise. + * tree-ssa-loop-manip.c (create_iv): Handle pointer base + specially. + * tree-tailcall.c (process_assignment): Mention + POINTER_PLUS_EXPR in a TODO comment. + * tree.c (build2_stat): Assert when trying to use PLUS_EXPR or + MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR + not used with a pointer and an integer type. + * tree-scalar-evolution.c (add_to_evolution_1): Convert the + increment using chrec_convert_rhs instead of chrec_convert. + (follow_ssa_edge_in_rhs): Handle POINTER_PLUS_EXPR like + PLUS_EXPR except for the right hand side's type will be + sizetype. + (interpret_rhs_modify_stmt): Handle POINTER_PLUS_EXPR. + (fold_used_pointer_cast): Kill. + (pointer_offset_p): Kill. + (fold_used_pointer): Kill. + (pointer_used_p): Kill. + (analyze_scalar_evolution_1 ): Don't + call fold_used_pointer. + (instantiate_parameters_1): Convert the increment + using chrec_convert_rhs instead of chrec_convert. + Handle POINTER_PLUS_EXPR as PLUS_EXPR. + * builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR + instead of PLUS_EXPR. + (expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of + PLUS_EXPR for pointers. + (std_gimplify_va_arg_expr): Likewise. + (fold_builtin_memory_op): Likewise. + (fold_builtin_strstr): Likewise. + (fold_builtin_strchr): Likewise. + (fold_builtin_strrchr): Likewise. + (fold_builtin_strpbrk): Likewise. + (expand_builtin_memory_chk): Likewise. + (fold_builtin_memory_chk): Likewise. + (std_expand_builtin_va_start): Use + sizetype for the call to make_tree and then convert + to the pointer type. + (fold_builtin_memchr): Use POINTER_PLUS_EXPR + instead of PLUS_EXPR for adding to a pointer. + (std_gimplify_va_arg_expr): Use fold_build2 for + the creating of POINTER_PLUS_EXPR. For the BIT_AND_EXPR, cast + the operands to sizetype first and then cast the BIT_AND_EXPR + back to the pointer type. + * fold-const.c (build_range_check): Handle pointer types + specially. + (extract_array_ref): Look for POINTER_PLUS_EXPR instead + of PLUS_EXPR's. Make sure the offset is converted to + sizetype. + (try_move_mult_to_index): Strip the NOPs from the offset. + Remove code argument and replace all uses with PLUS_EXPR. + (fold_to_nonsharp_ineq_using_bound): Handle pointer types + specially. Don't use a pointer type for MINUS_EXPR. + (fold_unary): Handle for (T1)(X op Y), + only p+ as that is the only as that can be handled for + binary operators now. + (fold_binary ): Add folding of + POINTER_PLUS_EXPR. + : Add folding of PTR+INT into + PTR p+ INT. + Don't call try_move_mult_to_index. + : Fold (PTR0 p+ A) - (PTR1 p+ B) + into (PTR0 - PTR1) + (A - B). Fold (PTR0 p+ A) - PTR1 into + (PTR0 - PTR1) + A iff (PTR0 - PTR1) simplifies. + Don't call try_move_mult_to_index. + (tree_expr_nonnegative_warnv_p): Handle POINTER_PLUS_EXPR. + (tree_expr_nonzero_p): Likewise. + (fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead + of PLUS_EXPR for the complex expression folding. + * tree-chrec.c (chrec_fold_plus_poly_poly): If the + first chrec is a pointer type, then the second should + be sizetype and not the first's type. + For POINTER_PLUS_EXPR, use a different right hand side type. + Handle POINTER_PLUS_EXPR like PLUS_EXPR. + (chrec_fold_plus_1): For POINTER_PLUS_EXPR, use a + different right hand side type. + Handle POINTER_PLUS_EXPR like PLUS_EXPR. + (chrec_fold_plus): For pointer types, use POINTER_PLUS_EXPR + instead of PLUS_EXPR. + When either operand is zero, convert the other operand. + (chrec_apply): Use chrec_convert_rhs + on the argument x instead of chrec_convert. + (reset_evolution_in_loop): For pointer types, the new_evol + should be sizetype. + (convert_affine_scev): For POINTER_PLUS_EXPR, use a + different right hand side type. + Handle POINTER_PLUS_EXPR like PLUS_EXPR. + (chrec_convert_rhs): New function. + (chrec_convert_aggressive): For POINTER_PLUS_EXPR, use a + different right hand side type. + Handle POINTER_PLUS_EXPR like PLUS_EXPR. + * tree-chrec.h (chrec_convert_rhs): New prototype. + (build_polynomial_chrec): For pointer types, the right hand + * tree-ssa-ccp.c (maybe_fold_stmt_indirect): Look for + POINTER_PLUS_EXPR instead of PLUS_EXPR's. + Remove subtraction case as it is always addition now. + Make sure the offset is converted to sizetype. + (fold_stmt_r): Don't handle PLUS_EXPR/MINUS_EXPR specially. + Handle POINTER_PLUS_EXPR like PLUS_EXPR was handled before. + * tree-ssa-loop-ivopts.c (determine_base_object): Abort for + PLUS_EXPR in pointer type. + Handle POINTER_PLUS_EXPR. + (tree_to_aff_combination): Likewise. + (force_expr_to_var_cost): Likewise. + (force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR + instead of PLUS_EXPR for pointers. + * c-format.c (check_format_arg): Handle POINTER_PLUS_EXPR + instead of PLUS_EXPR of pointer types. + * tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR + as PLUS_EXPR. + (check_va_list_escapes): Likewise. + (check_all_va_list_escapes): Likewise. + * dwarf2out.c (loc_descriptor_from_tree_1): + Handle POINT_PLUS_EXPR as a PLUS_EXPR. + * expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR. + (string_constant): Likewise. + * tree-ssa-address.c (tree_mem_ref_addr): When adding + the offset to the base, use POINTER_PLUS_EXPR. + (add_to_parts): Convert the index to sizetype. + (create_mem_ref): Create A POINTER_PLUS_EXPR for the one case. + * matrix-reorg.c (collect_data_for_malloc_call): Stmt + will now only be either INDIRECT_REF and POINTER_PLUS_EXPR. + Offset only holds something for PLUS_EXPR. + (ssa_accessed_in_tree): Handle POINTER_PLUS_EXPR just as + a PLUS_EXPR. + (analyze_transpose): POINTER_PLUS_EXPR will only show up now + and not PLUS_EXPR. + (analyze_accesses_for_modify_stmt): Likewise. + Remove comment about the type being integral type as it is + wrong now. + (can_calculate_expr_before_stmt): Handle POINTER_PLUS_EXPR as + PLUS_EXPR. + (transform_access_sites): POINTER_PLUS_EXPR will only show up now + and not PLUS_EXPR. + Correct the type which the artimentic is done in (is now + sizetype). + Reindent one loop. + * tree-data-ref.c (split_constant_offset): Handle + POINTER_PLUS_EXPR + * tree-affine.c (tree_to_aff_combination): Likewise. + * c-typeck.c (build_unary_op): For pointers create the increment + as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR + for pointers. + * gimplify.c (gimplify_self_mod_expr): Create a + POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers. + (gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR. + * tree.def (POINTER_PLUS_EXPR): New tree code. + * tree-predcom.c (ref_at_iteration): If we have a pointer + type do the multiplication in sizetype. + * tree-mudflap.c (mf_xform_derefs_1): Create a + POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers. + * tree-ssa-forwprop.c + (forward_propagate_addr_into_variable_array_index): + Don't expect there to be a cast for the index as that + does not exist anymore. + (forward_propagate_addr_expr_1): Check for POINTER_PLUS_EXPR + instead of PLUS_EXPR. + Don't check for the first operand of the POINTER_PLUS_EXPR + was the index as it cannot be. + Call forward_propagate_addr_into_variable_array_index with + the SSA_NAME instead of the statement. + * varasm.c (const_hash_1): Handle POINTER_PLUS_EXPR. + (compare_constant): Likewise. + (copy_constant): Likewise. + (compute_reloc_for_constant): Likewise. + (output_addressed_constants): Likewise. + (initializer_constant_valid_p): Likewise. + * tree-ssa.c (tree_ssa_useless_type_conversion_1): + Convert the MIN/MAX of the inner type to the outer + type before comparing them. + * tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle + POINTER_PLUS_EXPR instead of PLUS_EXPR. + (issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead + of PLUS_EXPR for pointers. + * tree-inline.c (estimate_num_insns_1): Handle + POINTER_PLUS_EXPR. + * tree-vect-transform.c (vect_create_addr_base_for_vector_ref): + Create a POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers. + (bump_vector_ptr): Create a POINTER_PLUS_EXPR + instead of PLUS_EXPR for the pointer increment statement. + (vect_update_ivs_after_vectorizer): For pointer types, create + POINTER_PLUS_EXPR instead of PLUS_EXPR and also create + MULT_EXPR in sizetype. + (vect_gen_niters_for_prolog_loop): Add a cast when creating + byte_misalign. + * tree-object-size.c (plus_expr_object_size): Handle + POINTER_PLUS_EXPR instead of PLUS_EXPR. Removing all the extra + code which is trying to figure out which side is a pointer and + is the index. + (check_for_plus_in_loops_1): Likewise. + (check_for_plus_in_loops): Likewise. + * c-common.c (pointer_int_sum): Create a + POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers. + * tree-ssa-structalias.c (handle_ptr_arith): Handle + only POINTER_PLUS_EXPR. Removing all the extra + code which is trying to figure out which side is a pointer and + is the index. + * tree-cfg.c (verify_expr): Add extra checking for pointers and + PLUS_EXPR and MINUS_EXPR. + Also add checking to make sure the operands of POINTER_PLUS_EXPR + are correct. + * config/frv/frv.c (frv_expand_builtin_va_start): Use sizetype + with make_tree, instead of a pointer type. + * config/s390/s390.c (s390_va_start): Use POINTER_PLUS_EXPR + for pointers instead of PLUS_EXPR. + (s390_gimplify_va_arg): Likewise. + * config/spu/spu.c (spu_va_start): Create POINTER_PLUS_EXPR + instead of PLUS_EXPR when doing addition on pointer + types. Use sizetype for the second operand. + (spu_gimplify_va_arg_expr): Likewise. + * config/sparc/sparc.c (sparc_gimplify_va_arg): Use + POINTER_PLUS_EXPR instead of PLUS_EXPR when the operand was + a pointer. Don't create a BIT_AND_EXPR for pointer types. + * config/i386/i386.c (ix86_va_start): Use POINTER_PLUS_EXPR + for the pointer addition and also use size_int/sizetype + for the offset. + (ix86_gimplify_va_arg): Likewise. + Perform BIT_AND_EXPR on sizetype arguments. + * config/sh/sh.c (sh_va_start): Call make_tree with sizetype + and convert its result to a pointer type. Use POINTER_PLUS_EXPR + for the pointer additions and also use size_int for the offsets. + (sh_gimplify_va_arg_expr): Use POINTER_PLUS_EXPR for the pointer + additions and also use size_int for the offsets. Perform + BIT_AND_EXPR on sizetype arguments. + * config/ia64/ia64.c (ia64_gimplify_va_arg): Use + POINTER_PLUS_EXPR for pointers and create the + BIT_AND_EXPR in sizetype. + * config/rs6000/rs6000.c (rs6000_va_start): Use POINTER_PLUS_EXPR + instead of PLUS_EXPR for pointer addition. + (rs6000_va_start): Likewise. + Also use sizetype for the offset. + * config/pa/pa.c (reloc_needed): Handle POINTER_PLUS_EXPR + as PLUS_EXPR/MINUS_EXPR. + (hppa_gimplify_va_arg_expr): Don't create MINUS_EXPR or + PLUS_EXPR for pointers, instead use POINTER_PLUS_EXPR. + Don't use BIT_AND_EXPR on a pointer type, convert the + expression to sizetype first. + * config/mips/mips.c (mips_va_start): Use POINTER_PLUS_EXPR + for pointers. + (mips_gimplify_va_arg_expr): Likewise. + Don't create BIT_AND_EXPR in a pointer type. + +2007-06-15 Eric Christopher + + * config.gcc (i?86-*-darwin*): Add t-crtfm and t-crtpc. + (x86_64-*-darwin*): Ditto. + * config/i386/darwin.h (CRTEND_SPEC): New. Add support + for above. + +2007-06-15 Matthew Wilcox + + * doc/extend.texi: Document behavior of __attribute__((aligned)) + on typedefs. + +2007-06-15 Mark Mitchell + + * rtlanal.c (note_stores): Improve documentation. + +2007-06-15 Bernd Schmidt + + * config/bfin/elf.h (ASM_GENERATE_INTERNAL_LABEL, + LOCAL_LABEL_PREFIX): Delete. + * config/bfin/bfin.c (TARGET_ASM_INTERNAL_LABEL): Delete. + (bfin_internal_label): Delete. + +2007-06-15 Uros Bizjak + + * libgcc2.c (CEXT): When compiling L_multc3 and L_divtc3, + define to "l" if LIBGCC_LONG_DOUBLE_SIZE == 128, + otherwise define to LIBGCC2_TF_CEXT. + * config/i386/linux64.h (LIBGCC2_HAS_TF_MODE): New define. + (LIBGCC_TF_CEXT): Ditto. + (TF_SIZE): Ditto. + +2007-06-14 Seongbae Park + + PR rtl-optimization/32339 + * df-scan.c (df_uses_record): Don't modify flags but just add to + it for df_ref_record. + +2007-06-14 Andrew Pinski + + * tree-mudflap.c: Fix whitespace issues. + +2007-06-15 Kazu Hirata + + * config/m68k/m68k.c (ASM_DOT, ASM_DOTW, ASM_DOTL): Remove. + +2007-06-14 Eric Christopher + + * config/i386/sse.md (movdi_to_sse): Rewrite body. + (movv4sf): Use gcc_unreachable instead of abort. + +2007-06-14 Uros Bizjak + + PR target/32268 + * config/i386/sfp-machine.h (CMPtype): New define. + (mach stubs): Use CMPtype instead of int as a return type. + +2007-06-14 Uros Bizjak + + * config/soft-fp/eqdf2.c, config/soft-fp/eqsf2.c, + config/soft-fp/eqtf2.c, config/soft-fp/gedf2.c, + config/soft-fp/gesf2.c, config/soft-fp/getf2.c, + config/soft-fp/ledf2.c, config/soft-fp/lesf2.c, + config/soft-fp/letf2.c, config/soft-fp/unorddf2.c, + config/soft-fp/unordsf2.c, config/soft-fp/unordtf2.c, + config/soft-fp/soft-fp.h: Update from glibc CVS. + +2007-06-14 Bernd Schmidt + + * config/bfin/uclinux.h (MFWRAP_SPEC): New. + +2007-06-14 Rask Ingemann Lambertsen + + PR target/32341 + * config/v850/v850.c: Include dataflow header file. + (substitute_ep_register): Fix typo. + +2007-06-14 Paolo Bonzini + + * configure.ac: Fix earlier checkin. + * configure: Regenerated. + +2007-06-14 Paolo Bonzini + + * acinclude.m4 (gcc_AC_CHECK_PROG_VER): Remove. + * aclocal.m4: Regenerate. + * configure.ac: Use ACX_PROG_CC_WARNING_OPTS, + ACX_PROG_CC_WARNINGS_ARE_ERRORS, + ACX_PROG_CC_WARNING_ALMOST_PEDANTIC, ACX_CHECK_PROG_VER. + * configure: Regenerate. + * Makefile.in (LOOSE_WARN): Subst loose_warn. + + * Makefile.in (quickstrap): Build libgcc too. + 2007-06-14 Paolo Bonzini * configure.ac: Add --enable-checking=df. Explicitly mention that @@ -106,6 +899,7 @@ * df-scan.c (df_get_exit-block_use_set): Always add the stack pointer to the exit block use set. + (df_insn_delete, df_insn_rescan): Fixed spelling of "deferring". * gcse.c (cpro_jump): Don't emit barrier in cfglayout mode. * config/sparc/sparc.c (sparc_check_64): Check df != NULL.