aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2009-05-18M68K TLS support.Maxim Kuvyrkov21-87/+902
* configure.ac (m68k-*-*): Check if binutils support TLS. * configure: Regenerate. * config/m68k/predicates.md (symbolic_operand): Extend comment. * config/m68k/constraints.md (Cu): New constraint. * config/m68k/m68k.md (UNSPEC_GOTOFF): Remove. (UNSPEC_RELOC16, UNSPEC_RELOC32): New constants. (movsi): Handle TLS symbols. (addsi3_5200): Handle XTLS symbols, indent. * config/m68k/m68k-protos.h (m68k_legitimize_tls_address): Declare. (m68k_tls_reference_p): Declare. (m68k_legitimize_address): Declare. (m68k_unwrap_symbol): Declare. * config/m68k/m68k.opt (mxtls): New option. * config/m68k/m68k.c (ggc.h): Include. (m68k_output_dwarf_dtprel): Implement hook. (TARGET_HAVE_TLS, TARGET_ASM_OUTPUT_DWARF_DTPREL): Define. (m68k_expand_prologue): Load GOT pointer when function needs it. (m68k_illegitimate_symbolic_constant_p): Handle TLS symbols. (m68k_legitimate_constant_address_p): Same. (m68k_decompose_address): Handle TLS references. (m68k_get_gp): New static function. (enum m68k_reloc): New contants. (TLS_RELOC_P): New macro. (m68k_wrap_symbol): New static function. (m68k_unwrap_symbol): New function. (m68k_final_prescan_insn_1): New static function. (m68k_final_prescan_insn): New function. (m68k_move_to_reg, m68k_wrap_symbol_into_got_ref): New static functions. (legitimize_pic_address): Handle TLS references.. (m68k_tls_get_addr, m68k_get_tls_get_addr) (m68k_libcall_value_in_a0_p) (m68k_call_tls_get_addr, m68k_read_tp, m68k_get_m68k_read_tp) (m68k_call_m68k_read_tp): Helper variables and functions for ... (m68k_legitimize_tls_address): Handle TLS references. (m68k_tls_symbol_p, m68k_tls_reference_p_1, m68k_tls_reference_p): New functions. (m68k_legitimize_address): Handle TLS symbols. (m68k_get_reloc_decoration): New static function. (m68k_output_addr_const_extra): Handle UNSPEC_RELOC16 and UNSPEC_RELOC32. (m68k_output_dwarf_dtprel): Implement hook. (print_operand_address): Handle UNSPEC_RELOC16 adn UNSPEC_RELOC32. (m68k_libcall_value): Return result in A0 instead of D0 when asked by m68k_call_* routines. (sched_attr_op_type): Handle TLS symbols. (gt-m68k.h): Include. * config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define. (LEGITIMATE_PIC_OPERAND_P): Support TLS. * gcc.target/m68k/tls-ie.c: New test. * gcc.target/m68k/tls-le.c: New test. * gcc.target/m68k/tls-gd.c: New test. * gcc.target/m68k/tls-ld.c: New test. * gcc.target/m68k/tls-ie-xgot.c: New test. * gcc.target/m68k/tls-le-xtls.c: New test. * gcc.target/m68k/tls-gd-xgot.c: New test. * gcc.target/m68k/tls-ld-xgot.c: New test. * gcc.target/m68k/tls-ld-xtls.c: New test. * gcc.target/m68k/tls-ld-xgot-xtls.c: New test. From-SVN: r147654
2009-05-18Daily bump.GCC Administrator1-1/+1
From-SVN: r147649
2009-05-18ipa-prop.c (ipa_check_stmt_modifications): Removed.Martin Jambor4-57/+40
2009-05-18 Martin Jambor <mjambor@suse.cz> * ipa-prop.c (ipa_check_stmt_modifications): Removed. (visit_store_addr_for_mod_analysis): New function. (ipa_detect_param_modifications): Use walk_stmt_load_store_addr_ops. (determine_cst_member_ptr): Use gimple_assign_single_p. (ipa_get_stmt_member_ptr_load_param): Use gimple_assign_single_p. (ipa_analyze_call_uses): Use !gimple_assign_rhs2 rather than number of operands. Don't check number of operands of a NOP_EXPR. * testsuite/gcc.dg/ipa/modif-1.c: Do not check for unmodified int parameter. From-SVN: r147645
2009-05-18tree-ssa.texi (SSA Operands): Fix a mistake.Eric Fisher2-3/+7
2009-05-18 Eric Fisher <joefoxreal@gmail.com> * doc/tree-ssa.texi (SSA Operands): Fix a mistake. From-SVN: r147644
2009-05-17re PR c/40172 (Revision 147596 breaks bootstrap)H.J. Lu4-6/+46
gcc/ 2009-05-17 Manuel López-Ibáñez <manu@gcc.gnu.org> PR c/40172 * c-common.c (warn_logical_operator): Don't warn if one of expression isn't always true or false. gcc/testscase/ 2009-05-17 H.J. Lu <hongjiu.lu@intel.com> PR c/40172 * gcc.dg/pr40172.c: New. From-SVN: r147639
2009-05-17re PR c++/40139 (ICE on invalid use of destructor)Jason Merrill7-23/+81
PR c++/40139 * pt.c (tsubst_qualified_id): Retain the type if we aren't dealing with a dependent type. Actually look up the destructor. * semantics.c (finish_id_expression): Fix logic. (finish_qualified_id_expr): Don't try to use 'this' if we aren't in a function. * typeck.c (build_x_unary_op): Diagnose taking the address of a constructor or destructor. * tree.c (get_first_fn): Handle OFFSET_REF. From-SVN: r147638
2009-05-17tree.c (cxx_printable_name_internal): Allow consecutive translated and ↵Joseph Myers4-4/+64
untranslated cached copies of the name of the... cp: * tree.c (cxx_printable_name_internal): Allow consecutive translated and untranslated cached copies of the name of the current function. testsuite: * g++.dg/warn/translate-ice-1.C: New test. From-SVN: r147636
2009-05-17iso-fortran-env.def: Define INT8, INT16, INT32, INT64, REAL32, REAL64 and ↵Francois-Xavier Coudert10-47/+174
REAL128. * iso-fortran-env.def: Define INT8, INT16, INT32, INT64, REAL32, REAL64 and REAL128. * gfortran.h (gfc_get_int_kind_from_width_isofortranenv, gfc_get_real_kind_from_width_isofortranenv): New prototypes. * iso-c-binding.def: Update definitions for the INT*_T, INT_LEAST*_T and INT_FAST*_T named parameters. * trans-types.c (get_typenode_from_name, get_int_kind_from_name, gfc_get_real_kind_from_width_isofortranenv): New functions. * gfortran.dg/c_kind_int128_test1.f03: Also test C_INT_FAST128_T. * gfortran.dg/c_kind_int128_test2.f03: Update comment. * gfortran.dg/c_kind_params.f90: Also test int_fast*_t. * gfortran.dg/c_kinds.c: Add int_fast*_t arguments. From-SVN: r147635
2009-05-17re PR fortran/36260 (Audit intrinsic.texi and check whether keyword= names ↵Francois-Xavier Coudert3-170/+204
match) PR fortran/36260 * intrinsic.c (add_functions, add_subroutines): Fix argument names and wrap long lines. * intrinsic.texi: Fix documentation and argument names of LOG_GAMMA, DATAN2, DBESJN, DTIME, ETIME, FSTAT, STAT, LSTAT, GET_COMMAND, IDATE, LTIME, MOVE_ALLOC, NINT, OR, PRODUCT, SUM, RAND, RANDOM_SEED, REAL, SELECTED_INT_KIND, SELECTED_REAL_KIND and XOR. From-SVN: r147633
2009-05-17biarch32.h: New file.Kai Tietz3-0/+40
2009-05-17 Kai Tietz <kai.tietz@onevision.com> * config/i386/biarch32.h: New file. * config.gcc: Add for target i386-w64-* the biarch32.h to tm_file. From-SVN: r147631
2009-05-17* config/mips/mips.md (*zero_extend<mode>_trunchi,Adam Nemet2-14/+15
*zero_extend<mode>_truncqi): Merge these into ... (*zero_extend<GPR:mode>_trunc<SHORT:mode>): ... this new pattern. Name the pattern following this as *zero_extendhi_truncqi. From-SVN: r147630
2009-05-17Daily bump.GCC Administrator1-1/+1
From-SVN: r147629
2009-05-16re PR middle-end/39301 (ICE in register_overhead, at bitmap.c:115)Brad Lucier3-8/+20
2009-05-16 Brad Lucier <lucier@math.purdue.edu> PR middle-end/39301 * hwint.h: Add macro HOST_WIDEST_INT_PRINT. * bitmap.c (bitmap_descriptor): Make fields HOST_WIDEST_INT. (output_info): Make field HOST_WIDEST_INT. (print_statistics): Use HOST_WIDEST_INT_PRINT. (dump_bitmat_statistics): Same. From-SVN: r147624
2009-05-16config.gcc (use_gcc_stdint): Set to wrap.Francois-Xavier Coudert3-0/+45
* config.gcc (use_gcc_stdint): Set to wrap. * config/darwin.h (SIG_ATOMIC_TYPE, INT8_TYPE, INT16_TYPE, INT32_TYPE, INT64_TYPE, UINT8_TYPE, UINT16_TYPE, UINT32_TYPE, UINT64_TYPE, INT_LEAST8_TYPE, INT_LEAST16_TYPE, INT_LEAST32_TYPE, INT_LEAST64_TYPE, UINT_LEAST8_TYPE, UINT_LEAST16_TYPE, UINT_LEAST32_TYPE, UINT_LEAST64_TYPE, INT_FAST8_TYPE, INT_FAST16_TYPE, INT_FAST32_TYPE, INT_FAST64_TYPE, UINT_FAST8_TYPE, UINT_FAST16_TYPE, UINT_FAST32_TYPE, UINT_FAST64_TYPE, INTPTR_TYPE, UINTPTR_TYPE): Define. From-SVN: r147622
2009-05-16re PR fortran/33197 (Fortran 2008: math functions)Francois-Xavier Coudert7-2/+220
PR fortran/33197 * intrinsic.c (add_functions): Use ERFC_SCALED simplification. * intrinsic.h (gfc_simplify_erfc_scaled): New prototype. * simplify.c (fullprec_erfc_scaled, asympt_erfc_scaled, gfc_simplify_erfc_scaled): New functions. * gfortran.dg/erf_2.F90: New test. * gfortran.dg/erfc_scaled_2.f90: New test. From-SVN: r147621
2009-05-16re PR fortran/31243 (Detect strings longer than 2**32 characters)Francois-Xavier Coudert7-5/+102
PR fortran/31243 * resolve.c (resolve_substring): Don't allow too large substring indexes. (gfc_resolve_substring_charlen): Fix typo. (gfc_resolve_character_operator): Fix typo. (resolve_charlen): Catch unreasonably large string lengths. * simplify.c (gfc_simplify_len): Don't error out on LEN range checks. * gcc/testsuite/gfortran.dg/string_1.f90: New test. * gcc/testsuite/gfortran.dg/string_2.f90: New test. * gcc/testsuite/gfortran.dg/string_3.f90: New test. From-SVN: r147619
2009-05-16config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and tune_64.Joseph Myers3-29/+54
* config.gcc (mips*-*-*): Support arch_32, arch_64, tune_32 and tune_64. * config/mips/mips.h (MIPS_ABI_DEFAULT, MULTILIB_ABI_DEFAULT): Move definitions earlier. (OPT_ARCH64, OPT_ARCH32): Define. (OPTION_DEFAULT_SPECS): Add entries for arch_32, arch_64, tune_32 and tune_64. From-SVN: r147617
2009-05-16* ChangeLog: Forgotten in previous commit.François-Xavier Coudert1-0/+9
From-SVN: r147616
2009-05-16re PR fortran/36031 (ARM -fshort-enums attribute not emitted for Fortran)François-Xavier Coudert4-5/+5
PR fortran/36031 * decl.c (set_enum_kind): Use global short-enums flag. * gfortran.h (gfc_option_t): Remove short_enums flag. * lang.opt (-fshort-enums): Refer to C documentation. * options.c (gfc_init_options, gfc_handle_option): Use global short-enums flag. From-SVN: r147615
2009-05-16re PR target/40153 (Long long comparison optimized away incorrectly in Thumb ↵Richard Earnshaw2-1/+7
code.) PR target/40153 * arm.md (cstoresi_nltu_thumb1): Use a neg of ltu as the pattern name implies. From-SVN: r147613
2009-05-16* arm.md (movdi2): Copy non-reg values to DImode registers.Richard Earnshaw2-2/+6
From-SVN: r147612
2009-05-16default_format_denormal_1.f90: XFAIL on cygwin.David Billinghurst3-4/+8
2009-05-16 David Billinghurst <billingd@gcc.gnu.org> * gfortran.dg/default_format_denormal_1.f90: XFAIL on cygwin. * gfortran.dg/default_format_1.f90: Revert change of 2009-05-12 Correct accidental commit of wrong file. From-SVN: r147610
2009-05-16re PR target/39942 (Nonoptimal code - leaveq; xchg %ax,%ax; retq)Jakub Jelinek4-10/+78
PR target/39942 * final.c (label_to_max_skip): New function. (label_to_alignment): Only use LABEL_TO_ALIGNMENT if CODE_LABEL_NUMBER <= max_labelno. * output.h (label_to_max_skip): New prototype. * config/i386/i386.c (ix86_avoid_jump_misspredicts): Renamed to... (ix86_avoid_jump_mispredicts): ... this. Don't define if ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. Update comment. Handle CODE_LABELs with >= 16 byte alignment or with max_skip == (1 << align) - 1. (ix86_reorg): Don't call ix86_avoid_jump_mispredicts if ASM_OUTPUT_MAX_SKIP_ALIGN isn't defined. From-SVN: r147607
2009-05-16re PR target/39942 (Nonoptimal code - leaveq; xchg %ax,%ax; retq)Jakub Jelinek3-3/+14
PR target/39942 * config/i386/x86-64.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Don't emit second .p2align 3 if MAX_SKIP is smaller than 7. * config/i386/linux.h (ASM_OUTPUT_MAX_SKIP_ALIGN): Likewise. From-SVN: r147606
2009-05-16alias.c (struct alias_set_entry_d): Rename from struct alias_set_entry.Ian Lance Taylor27-276/+450
gcc/ChangeLog: * alias.c (struct alias_set_entry_d): Rename from struct alias_set_entry. Change all uses. * except.c (struct call_site_record_d): Rename from struct call_site_record. Change all uses. * except.h (struct eh_region_d): Rename from struct eh_region. Change all uses. * gcse.c (struct hash_table_d): Rename from struct hash_table. Change all uses. * graphite.c (struct ivtype_map_elt_d): Rename fromstruct ivtype_map_elt. Change all uses. (struct rename_map_elt_d): Rename fromstruct rename_map_elt. Change all uses. (struct ifsese_d): Rename fromstruct ifsese. Change all uses. * graphite.h (struct name_tree_d): Rename from struct name_tree. Change all uses. (struct sese_d): Rename from struct sese. Change all uses. * omega.h (struct eqn_d): Rename from struct eqn. Change all uses. (struct omega_pb_d): Rename from struct omega_pb. Change all uses. * optabs.h (struct optab_d): Rename from struct optab. Change all uses. (struct convert_optab_d): Rename from struct convert_optab. Change all uses. * tree-pass.h (struct ipa_opt_pass_d): Rename fromstruct ipa_opt_pass. Change all uses. * tree-predcom.c (struct dref_d): Rename from struct dref. Change all uses. * c-decl.c (pushtag): If -Wc++-compat, warn if the tag is already defined as a typedef. (grokdeclarator): If -Wc++-compat, warn if a typedef is already defined as a tag. gcc/cp/ChangeLog: * cp-tree.h (enum cp_lvalue_kind_flags): Rename from cp_lvalue_kind. Change all uses. (enum base_access_flags): Rename from enum base_access. Change all uses. * parser.c (enum cp_parser_flags): Remove enum tag. gcc/testsuite/ChangeLog: * gcc.dg/Wcxx-compat-10.c: New testcase. libcpp/ChangeLog: * include/cpplib.h (enum cpp_builtin_type): Rename from enum builtin_type. Change all uses. From-SVN: r147605
2009-05-16Daily bump.GCC Administrator1-1/+1
From-SVN: r147604
2009-05-15re PR c/16302 (gcc fails to warn about some common logic errors)Manuel López-Ibáñez11-16/+253
2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org> PR 16302 * fold-const.c (make_range,build_range_check,merge_ranges): Move declaration to... (merge_ranges): Returns bool. * tree.h (make_range): .. to here. (build_range_check): Likewise. (merge_ranges): Likewise. Renamed from merge_ranges. * c-typeck.c (parser_build_binary_op): Update calls to warn_logical_operator. * c-common.c (warn_logical_operator): Add new warning. * c-common.h (warn_logical_operator): Update declaration. cp/ * call.c (build_new_op): Update calls to warn_logical_operator. testsuite/ * gcc.dg/pr16302.c: New. * g++.dg/warn/pr16302.C: New. From-SVN: r147596
2009-05-15ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional.Manuel López-Ibáñez2-1/+6
2009-05-15 Manuel López-Ibáñez <manu@gcc.gnu.org> * ira-conflicts.c (add_insn_allocno_copies): Fix wrong conditional. From-SVN: r147595
2009-05-15builtin-math-5.c: New.Kaveh R. Ghazi4-0/+216
* gcc.dg/torture/builtin-math-5.c: New. * gcc.dg/torture/builtin-math-6.c: New. * lib/target-supports.exp (check_effective_target_mpc): New. From-SVN: r147593
2009-05-15install.texi: Document MPC requirements, flags etc.Kaveh R. Ghazi2-12/+32
* doc/install.texi: Document MPC requirements, flags etc. From-SVN: r147592
2009-05-15builtins.c (do_mpc_arg1, [...]): New.Kaveh R. Ghazi4-15/+211
* builtins.c (do_mpc_arg1, fold_builtin_ccos): New. (fold_builtin_cexp): Ensure we get a complex REAL_TYPE. Evaluate constant arguments. (fold_builtin_carg): Ensure we get a complex REAL_TYPE. (fold_builtin_1): Likewise, also evaluate constant arguments. Remove superfluous break. (do_mpc_ckconv): New. * real.h: Include mpc.h. * toplev.c (print_version): Output MPC version info if available. From-SVN: r147591
2009-05-15fold-const.c (fold_convert_const_real_from_real): Check for overflow.Sandra Loosemore2-1/+23
2009-05-15 Sandra Loosemore <sandra@codesourcery.com> gcc/ * fold-const.c (fold_convert_const_real_from_real): Check for overflow. From-SVN: r147589
2009-05-15i386.c (ix86_reorg): Call optimize_function_for_speed_p only once.H.J. Lu2-6/+12
2009-05-15 H.J. Lu <hongjiu.lu@intel.com> * config/i386/i386.c (ix86_reorg): Call optimize_function_for_speed_p only once. From-SVN: r147588
2009-05-15invoke.texi (max-early-inliner-iterations): New flag.Jan Hubicka6-66/+133
* doc/invoke.texi (max-early-inliner-iterations): New flag. * ipa-inline.c (enum inlining_mode): New INLINE_SIZE_NORECURSIVE. (try_inline): Fix return value. (cgraph_decide_inlining_incrementally): Honor new value. (cgraph_early_inlining): Handle indirect inlining. * params.def (PARAM_EARLY_INLINER_MAX_ITERATIONS): New. * testsuite/gcc.dg/tree-ssa/inline-3.c: New testcase From-SVN: r147587
2009-05-15cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag.Jan Hubicka3-1/+11
2009-05-15 Jan Hubicka <jh@suse.cz> * cgraph.h (struct cgraph_node): Add finalized_by_frotnend flag. * cgraphunit.c (cgraph_finalize_function): Set it. (cgraph_expand_function): Use it. From-SVN: r147586
2009-05-15align-main-1.c (check): Mark noinline.Jan Hubicka9-1/+19
* gcc.target/i386/align-main-1.c (check): Mark noinline. * gcc.target/i386/align-main-2.c (check): Mark noinline. * gcc.dg/ipa/ipa-4.c: Disable early inlining. * gcc.dg/vect/vect-iv-10.c (main1): Mark noinline. * gcc.dg/vect/costmodel/i386/costmodel-vect-33.c (main1): Mark noinline. * gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c (main1): Mark noinline. * gcc.dg/vect/pr31699.c (foo): Mark noinline. * gcc.dg/vect/pr18400.c (main1): Mark noinline. From-SVN: r147585
2009-05-15sibcall-6.c: Add no-ipa-cp argument and mark the function to be optimized by ↵Jan Hubicka2-3/+8
sibcall noinline. * sibcall-6.c: Add no-ipa-cp argument and mark the function to be optimized by sibcall noinline. From-SVN: r147584
2009-05-15sibcall-1.c (track): Mark noinline.Jan Hubicka5-4/+11
* sibcall-1.c (track): Mark noinline. * sibcall-2.c (track): Mark noinline. * sibcall-3.c (track): Mark noinline. * sibcall-4.c (track): Mark noinline. From-SVN: r147583
2009-05-15flatten-2.c: Disable early inlining; add comment.Jan Hubicka3-2/+91
* flatten-2.c: Disable early inlining; add comment. * flatten-3.c: New test based on flatten-2.c. From-SVN: r147582
2009-05-15real.c (encode_ieee_half): Define.Sandra Loosemore3-0/+172
2009-05-15 Sandra Loosemore <sandra@codesourcery.com> gcc/ * real.c (encode_ieee_half): Define. (decode_ieee_half): Define. (ieee_half_format): Define. (arm_half_format): Define. * real.h (ieee_half_format): Declare. (arm_half_format): Declare. From-SVN: r147579
2009-05-15optabs.c (prepare_float_lib_cmp): Test that the comparison...Sandra Loosemore2-4/+11
2009-05-15 Sandra Loosemore <sandra@codesourcery.com> gcc/ * optabs.c (prepare_float_lib_cmp): Test that the comparison, swapped, and reversed optabs exist before trying to use them. From-SVN: r147578
2009-05-15arm.c (neon_vector_mem_operand): Handle element/structure loads.Paul Brook5-21/+62
2009-05-15 Paul Brook <paul@codesourcery.com> Sandra Loosemore <sandra@codesourcery.com> gcc/ * config/arm/arm.c (neon_vector_mem_operand): Handle element/structure loads. Allow PRE_DEC. (output_move_neon): Handle PRE_DEC. (arm_print_operand): Add 'A' for neon structure loads. * config/arm/arm-protos.h (neon_vector_mem_operand): Update prototype. * config/arm/neon.md (neon_mov): Update comment. * config/arm/constraints.md (Un, Us): Update neon_vector_mem_operand calls. (Um): New constraint. Co-Authored-By: Sandra Loosemore <sandra@codesourcery.com> From-SVN: r147577
2009-05-15Revert the following patch until testsuite fallout is fixed:Jan Hubicka10-354/+158
* cgraph.c (dump_cgraph_node): Dump size/time/benefit. * cgraph.h (struct inline_summary): New filed self_wize, size_inlining_benefit, self_time and time_inlining_benefit. (struct cgraph_global_info): Replace insns by time ans size fields. * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size (ipcp_estimate_growth, ipcp_insert_stage): Likewise. (ipcp_update_callgraph): Do not touch function bodies. * ipa-inline.c: Include except.h MAX_TIME: New constant. (overall_insns): Remove (overall_size, max_benefit): New static variables. (cgraph_estimate_time_after_inlining): New function. (cgraph_estimate_size_after_inlining): Rewrite using benefits. (cgraph_clone_inlined_nodes): Update size. (cgraph_mark_inline_edge): Update size. (cgraph_estimate_growth): Use size info. (cgraph_check_inline_limits): Check size. (cgraph_default_inline_p): Likewise. (cgraph_edge_badness): Compute badness based on benefit and size cost. (cgraph_decide_recursive_inlining): Check size. (cgraph_decide_inlining_of_small_function): Update size; dump sizes and times. (cgraph_decide_inlining): Likewise. (cgraph_decide_inlining_incrementally): Likewise; honor PARAM_EARLY_INLINING_INSNS. (likely_eliminated_by_inlining_p): New predicate. (estimate_function_body_sizes): New function. (compute_inline_parameters): Use it. * except.c (must_not_throw_labels): New function. * except.h (must_not_throw_labels): Declare. * tree-inline.c (init_inline_once): Kill inlining_weigths * tree-ssa-structalias.c: Avoid uninitialized warning. * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300. (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60. (PARAM_INLINE_CALL_COST): Remove. (PARAM_EARLY_INLINING_INSNS): New. From-SVN: r147575
2009-05-15tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals, not ↵Richard Guenther2-1/+6
TODO_update_ssa. 2009-05-15 Richard Guenther <rguenther@suse.de> * tree-ssa-pre.c (eliminate): Use TODO_update_ssa_only_virtuals, not TODO_update_ssa. From-SVN: r147574
2009-05-15re PR tree-optimization/39999 (gcc 4.4.0 compiles in infinite loop)Richard Guenther5-32/+73
2009-05-15 Richard Guenther <rguenther@suse.de> PR tree-optimization/39999 * gimple.h (gimple_expr_type): Use the expression type looking through useless conversions. * tree-ssa-sccvn.c (vn_nary_op_lookup_stmt): Use gimple_expr_type. (vn_nary_op_insert_stmt): Likewise. (simplify_binary_expression): Likewise. * gcc.c-torture/compile/pr39999.c: New testcase. From-SVN: r147573
2009-05-15common.opt (-ftree-forwprop, [...]): New options, enabled by default.Richard Guenther6-6/+54
2009-05-15 Richard Guenther <rguenther@suse.de> * common.opt (-ftree-forwprop, -ftree-phiprop, -ftree-pta): New options, enabled by default. * doc/invoke.texi (-ftree-forwprop, -ftree-phiprop, -ftree-pta): Document. * tree-ssa-forwprop.c (gate_forwprop): Use flag_tree_forwprop. * tree-ssa-phiprop.c (gate_phiprop): Use flag_tree_phiprop. * tree-ssa-structalias.c (gate_tree_pta): New function. (pass_build_alias): Use it. From-SVN: r147571
2009-05-15tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also recurse on an ↵Joseph Myers4-1/+26
invariant address if a conversion from a pointer type to a... * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Also recurse on an invariant address if a conversion from a pointer type to a wider integer type is involved. testsuite: * gcc.c-torture/compile/ptr-conv-1.c: New test. From-SVN: r147570
2009-05-15cgraph.c (dump_cgraph_node): Dump size/time/benefit.Jan Hubicka11-130/+399
* cgraph.c (dump_cgraph_node): Dump size/time/benefit. * cgraph.h (struct inline_summary): New filed self_wize, size_inlining_benefit, self_time and time_inlining_benefit. (struct cgraph_global_info): Replace insns by time ans size fields. * ipa-cp (ipcp_cloning_candidate_p): Base estimate on size (ipcp_estimate_growth, ipcp_insert_stage): Likewise. (ipcp_update_callgraph): Do not touch function bodies. * ipa-inline.c: Include except.h MAX_TIME: New constant. (overall_insns): Remove (overall_size, max_benefit): New static variables. (cgraph_estimate_time_after_inlining): New function. (cgraph_estimate_size_after_inlining): Rewrite using benefits. (cgraph_clone_inlined_nodes): Update size. (cgraph_mark_inline_edge): Update size. (cgraph_estimate_growth): Use size info. (cgraph_check_inline_limits): Check size. (cgraph_default_inline_p): Likewise. (cgraph_edge_badness): Compute badness based on benefit and size cost. (cgraph_decide_recursive_inlining): Check size. (cgraph_decide_inlining_of_small_function): Update size; dump sizes and times. (cgraph_decide_inlining): Likewise. (cgraph_decide_inlining_incrementally): Likewise; honor PARAM_EARLY_INLINING_INSNS. (likely_eliminated_by_inlining_p): New predicate. (estimate_function_body_sizes): New function. (compute_inline_parameters): Use it. * except.c (must_not_throw_labels): New function. * except.h (must_not_throw_labels): Declare. * tree-inline.c (init_inline_once): Kill inlining_weigths * tree-ssa-structalias.c: Avoid uninitialized warning. * params.def (PARAM_MAX_INLINE_INSNS_SINGLE): Reduce to 300. (PARAM_MAX_INLINE_INSNS_AUTO): Reduce to 60. (PARAM_INLINE_CALL_COST): Remove. (PARAM_EARLY_INLINING_INSNS): New. doc/invoke.texi (max-inline-insns-auto, early-inlining-insns): Update. (inline-call-cost): Remove. (early-inlining-insns): New. From-SVN: r147566
2009-05-15dbxout.c (dbxout_range_type): Add LOW and HIGH parameters.Eric Botcazou19-361/+500
* dbxout.c (dbxout_range_type): Add LOW and HIGH parameters. Use them for bounds. (print_int_cst_bounds_in_octal_p): Likewise. (dbxout_type): Adjust calls to above functions. Be prepared to deal with subtypes. * dwarf2out.c (base_type_die): Likewise. (is_subrange_type): Delete. (subrange_type_die): Add LOW and HIGH parameters. Use them for bounds. (modified_type_die): Call subrange_type_for_debug_p on subtypes. * fold-const.c (fold_truth_not_expr) <CONVERT_EXPR>: Do not strip it if the destination type is boolean. (build_range_check): Do not special-case subtypes. (fold_sign_changed_comparison): Likewise. (fold_unary): Likewise. * langhooks-def.h (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_GET_SUBRANGE_BOUNDS. * langhooks.h (lang_hooks_for_types): Add get_subrange_bounds. * tree.c (subrange_type_for_debug_p): New predicate based on the former is_subrange_type. * tree.h (subrange_type_for_debug_p): Declare. * tree-chrec.c (avoid_arithmetics_in_type_p): Delete. (convert_affine_scev): Remove call to above function. (chrec_convert_aggressive): Likewise. * tree-ssa.c (useless_type_conversion_p_1): Do not specifically return false for conversions involving subtypes. * tree-vrp.c (vrp_val_max): Do not special-case subtypes. (vrp_val_min): Likewise. (needs_overflow_infinity): Likewise. (extract_range_from_unary_expr): Likewise. ada/ * gcc-interface/ada-tree.h (TYPE_GCC_MIN_VALUE, TYPE_GCC_MAX_VALUE): New macros. (TYPE_RM_VALUES): Likewise. (TYPE_RM_SIZE): Rewrite in terms of TYPE_RM_VALUES. (SET_TYPE_RM_SIZE): New macro. (TYPE_RM_MIN_VALUE, TYPE_RM_MAX_VALUE): Likewise. (SET_TYPE_RM_SIZE, SET_TYPE_RM_MAX_VALUE): Likewise. (TYPE_MIN_VALUE, TYPE_MAX_VALUE): Redefine. * gcc-interface/gigi.h (create_range_type): Declare. * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Modular_Integer_Type> Use SET_TYPE_RM_MAX_VALUE to set the upper bound on the UMT type. <E_Signed_Integer_Subtype>: Build a regular integer type first and then set the RM bounds. Use SET_TYPE_RM_SIZE to set the RM size. <E_Floating_Point_Subtype>: Build a regular floating-point type first and then set the RM bounds. <E_Array_Type>: Use create_range_type instead of build_range_type. <E_Array_Subtype>: Build a regular integer type first and then set the RM bounds for the extra subtype. <E_String_Literal_Subtype>: Use create_range_type instead of build_range_type. <all>: Set the RM bounds for enumeration types and the GCC bounds for floating-point types. (set_rm_size): Use SET_TYPE_RM_SIZE to set the RM size. (make_type_from_size) <INTEGER_TYPE>: Use SET_TYPE_RM_{MIN,MAX}_VALUE to set the bounds. Use SET_TYPE_RM_SIZE to set the RM size. (substitute_in_type) <INTEGER_TYPE>: Deal with GCC bounds for domain types and with RM bounds for subtypes. * gcc-interface/misc.c (LANG_HOOKS_GET_SUBRANGE_BOUNDS): Define. (gnat_print_type) <REAL_TYPE>: New case. <ENUMERAL_TYPE>: Fall through to above case. (gnat_get_subrange_bounds): New function. * gcc-interface/trans.c (add_decl_expr): Mark the trees rooted as TYPE_RM_MIN_VALUE and TYPE_RM_MAX_VALUE, if any. * gcc-interface/utils.c (gnat_init_decl_processing): Use precision 8 for booleans. Adjust and use SET_TYPE_RM_SIZE to set the RM size. (create_range_type): New function. (create_param_decl): Build a regular integer type first and then set the RM bounds for the extra subtype. (unchecked_convert): Remove kludge for 'Valid. * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Convert the index to sizetype instead of TYPE_DOMAIN. From-SVN: r147563
2009-05-15frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS.Paolo Bonzini28-92/+68
2009-05-15 Paolo Bonzini <bonzini@gnu.org> * config/frv/frv.h: Clean up references to GO_IF_LEGITIMATE_ADDRESS. * config/frv/frv.c: Likewise. * config/s390/s390.c: Likewise. * config/sparc/sparc.h: Likewise. * config/i386/i386.h: Likewise. * config/i386/i386.c: Likewise. * config/crx/crx.c: Likewise. * config/m68hc11/m68hc11.h: Likewise. * config/iq2000/iq2000.c: Likewise. * config/mn10300/mn10300.h: Likewise. * config/mn10300/mn10300.c: Likewise. * config/m68k/m68k.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/rs6000/xcoff.h: Likewise. * config/rs6000/linux64.h: Likewise. * config/rs6000/sysv4.h: Likewise. * config/score/score3.c: Likewise. * config/score/score7.c: Likewise. * config/score/score.c: Likewise. * config/arm/arm.md: Likewise. * config/mips/mips.c: Likewise. * config/mips/mips.md: Likewise. * config/bfin/bfin.h: Likewise. * config/pa/pa.c: Likewise. * config/pa/constraints.md: Likewise. * config/pdp11/pdp11-protos.h (legitimate_address_p): Delete. * config/pdp11/pdp11.c (legitimate_address_p): Delete. * config/pdp11/pdp11.h: Use memory_address_p instead. From-SVN: r147560