- 05 Nov, 2017 13 commits
-
-
re PR fortran/81447 ([7/8] gfortran fails to recognize the exact dynamic type of a polymorphic entity that was allocated in a external procedure) 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/81447 PR fortran/82783 * resolve.c (resolve_component): There is no need to resolve the components of a use associated vtype. (resolve_fl_derived): Unconditionally generate a vtable for any module derived type, as long as the standard is F2003 or later and it is not a vtype or a PDT template. 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/81447 * gfortran.dg/class_65.f90: New test. * gfortran.dg/alloc_comp_basics_1.f90: Increase builtin_free count from 18 to 21. * gfortran.dg/allocatable_scalar_9.f90: Increase builtin_free count from 32 to 54. * gfortran.dg/auto_dealloc_1.f90: Increase builtin_free count from 4 to 10. * gfortran.dg/coarray_lib_realloc_1.f90: Increase builtin_free count from 3 to 6. Likewise _gfortran_caf_deregister from 2 to 3, builtin_malloc from 1 to 4 and builtin_memcpy|= MEM from 2 to 5. * gfortran.dg/finalize_28.f90: Increase builtin_free count from 3 to 6. * gfortran.dg/move_alloc_15.f90: Increase builtin_free and builtin_malloc counts from 11 to 14. * gfortran.dg/typebound_proc_27.f03: Increase builtin_free count from 7 to 10. Likewise builtin_malloc from 12 to 15. From-SVN: r254427
Paul Thomas committed -
From-SVN: r254426
Gerald Pfeifer committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * asan.c (DEF_SANITIZER_BUILTIN_1): Factor out of ... (DEF_SANITIZER_BUILTIN): ... here. (initialize_sanitizer_builtins): Use DEF_SANITIZER_BUILTIN_1 instead of DEF_SANITIZER_BUILTIN in if stmt. Add missing semicolon. From-SVN: r254425
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * lex.c (BUF_APPEND): Remove semicolon after "do {} while (0)". From-SVN: r254424
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * config/elfos.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after macro body. (ASM_OUTPUT_CASE_LABEL): Add semicolon after ASM_OUTPUT_BEFORE_CASE_LABEL call. * config/arc/arc.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Remove semicolon after macro body. * config/m68k/m68kelf.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. * config/mips/mips.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. * config/v850/v850.h (ASM_OUTPUT_BEFORE_CASE_LABEL): Same. From-SVN: r254423
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * parse.c (match, matcha, matchs, matcho, matchds, matchdo): Remove semicolon after "do {} while (0)". From-SVN: r254422
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * graphite-scop-detection.c (DEBUG_PRINT): Remove semicolon after "do {} while (0)". From-SVN: r254421
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * printf/gmp-impl.h (MPN_MUL_N_RECURSE): Remove semicolon after "do {} while (0)". From-SVN: r254420
Tom de Vries committed -
2017-11-05 Tom de Vries <tom@codesourcery.com> PR other/82784 * asan/asan_poisoning.cc (CHECK_SMALL_REGION): Remove semicolon after "do {} while (0)". * lsan/lsan_common.cc (LOG_POINTERS, LOG_THREADS): Same. From-SVN: r254419
Tom de Vries committed -
This changes makes GCC asm output use instruction names that are consistent with the RISC-V ISA manual. The assembler accepts immediate-operand instructions without the "i" suffix, so this all worked before, it's just a bit cleaner to match the ISA manual more closely. gcc/ChangeLog 2017-10-03 Michael Clark <michaeljclark@mac.com> * config/riscv/riscv.c (riscv_print_operand): Add a 'i' format. config/riscv/riscv.md (addsi3): Use 'i' for immediates. (adddi3): Likewise. (*addsi3_extended): Likewise. (*addsi3_extended2): Likewise. (<optab>si3): Likewise. (<optab>di3): Likewise. (<optab><mode>3): Likewise. (<*optabe>si3_internal): Likewise. (zero_extendqi<SUPERQI:mode>2): Likewise. (*add<mode>hi3): Likewise. (*xor<mode>hi3): Likewise. (<optab>di3): Likewise. (*<optab>si3_extend): Likewise. (*sge<u>_<X:mode><GPR:mode>): Likewise. (*slt<u>_<X:mode><GPR:mode>): Likewise. (*sle<u>_<X:mode><GPR:mode>): Likewise. From-SVN: r254418
Michael Clark committed -
2017-11-04 Andrew Waterman <andrew@sifive.com> * config/riscv/riscv.c (riscv_option_override): Conditionally set TARGET_STRICT_ALIGN based upon -mtune argument. From-SVN: r254417
Andrew Waterman committed -
When implementing the RISC-V port, I took the name of this macro at face value. It appears we were mistaken in what this means, here's a quote from the SPARC port that better describes what SLOW_BYTE_ACCESS does /* Nonzero if access to memory by bytes is slow and undesirable. For RISC chips, it means that access to memory by bytes is no better than access by words when possible, so grab a whole word and maybe make use of that. */ I've added the comment to our port as well. See https://gcc.gnu.org/ml/gcc/2017-08/msg00202.html for more discussion. Thanks to Michael Clark and Andrew Pinski for the help! gcc/ChangeLog 2017-11-04 Andrew Waterman <andrew@sifive.com> * config/riscv/riscv.h (SLOW_BYTE_ACCESS): Change to 1. From-SVN: r254416
Andrew Waterman committed -
From-SVN: r254415
GCC Administrator committed
-
- 04 Nov, 2017 8 commits
-
-
When we are realigning the stack pointer, making an ms_abi to sysv_abi call and allocating 2GiB or more on the stack we end up with an invalid INSN due to a non-immediate offset. This occurs both with and without -mcall-ms2sysv-xlogues. Additionally, the stack allocation with -mcall-ms2sysv-xlogues is ignoring (silently disabling) stack checking, stack clash checking and probing. This patch fixes these problems by: 1. No longer allocate stack space in ix86_emit_outlined_ms2sysv_save. 2. Rearrange where we emit SSE saves or stub call: a. Before frame allocation when offset from frame to save area is >= 2GiB. b. After frame allocation when frame is < 2GiB. (Stack allocations prior to the stub call can't be combined with those afterwards, so this is better when possible.) 3. Modify choose_baseaddr to take an optional scratch_regno argument and never return rtx that cannot be used as an immediate. gcc: config/i386/i386.c (choose_basereg): Use optional scratch register and add assertion. (x86_emit_outlined_ms2sysv_save): Use scratch register when needed, and don't allocate stack. (ix86_expand_prologue): Rearrange where SSE saves/stub call is emitted, correct wrong allocation with -mcall-ms2sysv-xlogues. (ix86_emit_outlined_ms2sysv_restore): Fix non-immediate offsets. gcc/testsuite: gcc.target/i386/pr82002-2a.c: Change from xfail to fail. gcc.target/i386/pr82002-2b.c: Likewise. From-SVN: r254412
Daniel Santos committed -
2017-11-04 Andreas Tobler <andreast@gcc.gnu.org> PR libgcc/82635 * config/i386/freebsd-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Use a sysctl to determine whether we're in a trampoline. Keep the pattern matching method for systems without KERN_PROC_SIGTRAMP sysctl. From-SVN: r254411
Andreas Tobler committed -
trans-expr.c (gfc_trans_assignment_1): Character kind conversion may create a loop variant temporary, too. gcc/fortran/ChangeLog: 2017-11-04 Andre Vehreschild <vehre@gcc.gnu.org> * trans-expr.c (gfc_trans_assignment_1): Character kind conversion may create a loop variant temporary, too. * trans-intrinsic.c (conv_caf_send): Treat char arrays as arrays and not as scalars. * trans.c (get_array_span): Take the character kind into account when doing pointer arithmetic. gcc/testsuite/ChangeLog: 2017-11-04 Andre Vehreschild <vehre@gcc.gnu.org> * gfortran.dg/coarray/send_char_array_1.f90: New test. From-SVN: r254407
Andre Vehreschild committed -
re PR fortran/70330 (ICE with -Wextra -Wno-unused-dummy-argument and unused optional dummy argument) 2017-11-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/70330 * gfortran.dg/pr70330.f90: New test. From-SVN: r254406
Thomas Koenig committed -
2017-11-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/29600 * gfortran.h (gfc_check_f): Replace fm3l with fm4l. * intrinsic.h (gfc_resolve_maxloc): Add gfc_expr * to argument list in protoytpe. (gfc_resolve_minloc): Likewise. * check.c (gfc_check_minloc_maxloc): Handle kind argument. * intrinsic.c (add_sym_3_ml): Rename to (add_sym_4_ml): and handle kind argument. (add_function): Replace add_sym_3ml with add_sym_4ml and add extra arguments for maxloc and minloc. (check_specific): Change use of check.f3ml with check.f4ml. * iresolve.c (gfc_resolve_maxloc): Handle kind argument. If the kind is smaller than the smallest library version available, use gfc_default_integer_kind and convert afterwards. (gfc_resolve_minloc): Likewise. 2017-11-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/29600 * gfortran.dg/minmaxloc_8.f90: New test. From-SVN: r254405
Thomas Koenig committed -
re PR fortran/81735 (double free or corruption (fasttop) error (SIGABRT) with character(:) and custom return type with allocatable) 2017-11-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/81735 * trans-decl.c (gfc_trans_deferred_vars): Do a better job of a case where 'tmp' was used unititialized and remove TODO. 2017-11-04 Paul Thomas <pault@gcc.gnu.org> PR fortran/81735 * gfortran.dg/pr81735.f90: New test. From-SVN: r254404
Paul Thomas committed -
2017-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82796 * resolve.c (resolve_equivalence): An entity in a common block within a module cannot appear in an equivalence statement if the entity is with a pure procedure. 2017-11-01 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/82796 * gfortran.dg/equiv_pure.f90: New test. From-SVN: r254403
Steven G. Kargl committed -
From-SVN: r254402
GCC Administrator committed
-
- 03 Nov, 2017 19 commits
-
-
re PR target/82823 (ICE in ix86_expand_prologue, at config/i386/i386.c:13171 with -fstack-clash-protection) PR target/82823 * g++.dg/torture/pr82823.C: New test. From-SVN: r254398
Jeff Law committed -
From-SVN: r254397
Jeff Law committed -
* config/i386/i386.c (ix86_emit_restore_reg_using_pop): Prototype. (ix86_adjust_stack_and_probe_stack_clash): Use a push/pop sequence to probe at the start of a noreturn function. * gcc.target/i386/stack-check-12.c: New test. From-SVN: r254396
Jeff Law committed -
re PR tree-optimization/78821 (GCC7: Copying whole 32 bits structure field by field not optimised into copying whole 32 bits at once) PR tree-optimization/78821 * gimple-ssa-store-merging.c: Update the file comment. (MAX_STORE_ALIAS_CHECKS): Define. (struct store_operand_info): New type. (store_operand_info::store_operand_info): New constructor. (struct store_immediate_info): Add rhs_code and ops data members. (store_immediate_info::store_immediate_info): Add rhscode, op0r and op1r arguments to the ctor, initialize corresponding data members. (struct merged_store_group): Add load_align_base and load_align data members. (merged_store_group::merged_store_group): Initialize them. (merged_store_group::do_merge): Update them. (merged_store_group::apply_stores): Pick the constant for encode_tree_to_bitpos from one of the two operands, or skip encode_tree_to_bitpos if neither operand is a constant. (class pass_store_merging): Add process_store method decl. Remove bool argument from terminate_all_aliasing_chains method decl. (pass_store_merging::terminate_all_aliasing_chains): Remove var_offset_p argument and corresponding handling. (stmts_may_clobber_ref_p): New function. (compatible_load_p): New function. (imm_store_chain_info::coalesce_immediate_stores): Terminate group if there is overlap and rhs_code is not INTEGER_CST. For non-overlapping stores terminate group if rhs is not mergeable. (get_alias_type_for_stmts): Change first argument from auto_vec<gimple *> & to vec<gimple *> &. Add IS_LOAD, CLIQUEP and BASEP arguments. If IS_LOAD is true, look at rhs1 of the stmts instead of lhs. Compute *CLIQUEP and *BASEP in addition to the alias type. (get_location_for_stmts): Change first argument from auto_vec<gimple *> & to vec<gimple *> &. (struct split_store): Remove orig_stmts data member, add orig_stores. (split_store::split_store): Create orig_stores rather than orig_stmts. (find_constituent_stmts): Renamed to ... (find_constituent_stores): ... this. Change second argument from vec<gimple *> * to vec<store_immediate_info *> *, push pointers to info structures rather than the statements. (split_group): Rename ALLOW_UNALIGNED argument to ALLOW_UNALIGNED_STORE, add ALLOW_UNALIGNED_LOAD argument and handle it. Adjust find_constituent_stores caller. (imm_store_chain_info::output_merged_store): Handle rhs_code other than INTEGER_CST, adjust split_group, get_alias_type_for_stmts and get_location_for_stmts callers. Set MR_DEPENDENCE_CLIQUE and MR_DEPENDENCE_BASE on the MEM_REFs if they are the same in all stores. (mem_valid_for_store_merging): New function. (handled_load): New function. (pass_store_merging::process_store): New method. (pass_store_merging::execute): Use process_store method. Adjust terminate_all_aliasing_chains caller. * gcc.dg/store_merging_13.c: New test. * gcc.dg/store_merging_14.c: New test. From-SVN: r254391
Jakub Jelinek committed -
* gfortran.dg/large_real_kind_2.F90: Test passes on FreeBSD. Remove dg-xfail-if directive. From-SVN: r254390
Steven G. Kargl committed -
This patch further improves aarch64_legitimate_constant_p. Allow all integer, floating point and vector constants. Allow label references and non-anchor symbols with an immediate offset. This allows such constants to be rematerialized, resulting in smaller code and fewer stack spills. SPEC2006 codesize reduces by 0.08%, SPEC2017 by 0.13%. gcc/ * config/aarch64/aarch64.c (aarch64_legitimate_constant_p): Return true for more constants, symbols and label references. (aarch64_valid_floating_const): Remove unused function. From-SVN: r254388
Wilco Dijkstra committed -
2017-11-03 Sandra Loosemore <sandra@codesourcery.com> gcc/testsuite/ * gcc.target/mips/msa.c: Add -fcommon to dg-options. From-SVN: r254387
Sandra Loosemore committed -
* config/i386/i386.c (ix86_expand_prologue): Tighten assert for int_registers_saved. From-SVN: r254386
Jeff Law committed -
PR testsuite/82828 PR rtl-optimization/70263 * gcc.target/i386/pr70263-2.c: Fix invalid testcase. From-SVN: r254385
Uros Bizjak committed -
Fix PR82768 Forcing LR at the bottom of the frame caused a few test failures. Since there are some cases that generate worse code, revert this part, and the frame tests pass again. gcc/ PR target/82786 * config/aarch64/aarch64.c (aarch64_layout_frame): Undo forcing of LR at bottom of frame. From-SVN: r254384
Wilco Dijkstra committed -
* cfganal.c (single_pred_edge_ignoring_loop_edges): New function extracted from tree-ssa-dom.c. * cfganal.h (single_pred_edge_ignoring_loop_edges): Prototype. * tree-ssa-dom.c (single_incoming_edge_ignoring_loop_edges): Remove. (record_equivalences_from_incoming_edge): Add additional argument to single_pred_edge_ignoring_loop_edges call. * tree-ssa-uncprop.c (single_incoming_edge_ignoring_loop_edges): Remove. (uncprop_dom_walker::before_dom_children): Add additional argument to single_pred_edge_ignoring_loop_edges call. * tree-ssa-sccvn.c (sccvn_dom_walker::before_dom_children): Use single_pred_edge_ignoring_loop_edges rather than open coding. * tree-vrp.c (evrp_dom_walker::before_dom_children): Similarly. From-SVN: r254383
Jeff Law committed -
2017-11-03 Marc Glisse <marc.glisse@inria.fr> gcc/ * match.pd (-(-A)): Rewrite. gcc/testsuite/ * gcc.dg/tree-ssa/negneg-1.c: New file. * gcc.dg/tree-ssa/negneg-2.c: Likewise. * gcc.dg/tree-ssa/negneg-3.c: Likewise. * gcc.dg/tree-ssa/negneg-4.c: Likewise. From-SVN: r254382
Marc Glisse committed -
* include/std/type_traits (endian): Define new enumeration type. * testsuite/20_util/endian/1.cc: New test. From-SVN: r254381
Jonathan Wakely committed -
Instead of calling rs6000_emit_sISEL, call rs6000_emit_int_cmove directly, in the one place it is used. * config/rs6000/rs60000-protos.h (rs6000_emit_sISEL): Delete. (rs6000_emit_int_cmove): New declaration. * config/rs6000/rs6000.c (rs6000_emit_int_cmove): Delete declaration. (rs6000_emit_sISEL): Delete. (rs6000_emit_int_cmove): Make non-static. * config/rs6000/rs6000.md (cstore<mode>4): Use rs6000_emit_int_cmove instead of rs6000_emit_sISEL. From-SVN: r254380
Segher Boessenkool committed -
* asan.c (create_cond_insert_point): Maintain profile. * ipa-utils.c (ipa_merge_profiles): Be sure only IPA profiles are merged. * basic-block.h (struct basic_block_def): Remove frequency. (EDGE_FREQUENCY): Use to_frequency * bb-reorder.c (push_to_next_round_p): Use only IPA counts for global heuristics. (find_traces): Update to use to_frequency. (find_traces_1_round): Likewise; use only IPA counts. (bb_to_key): Likewise. (connect_traces): Use IPA counts only. (copy_bb_p): Update to use to_frequency. (fix_up_crossing_landing_pad): Likewise. (sanitize_hot_paths): Likewise. * bt-load.c (basic_block_freq): Likewise. * cfg.c (init_flow): Set count_max to uninitialized. (check_bb_profile): Remove frequencies; check counts. (dump_bb_info): Do not dump frequencies. (update_bb_profile_for_threading): Update counts only. (scale_bbs_frequencies_int): Likewise. (MAX_SAFE_MULTIPLIER): Remove. (scale_bbs_frequencies_gcov_type): Update counts only. (scale_bbs_frequencies_profile_count): Update counts only. (scale_bbs_frequencies): Update counts only. * cfg.h (struct control_flow_graph): Add count-max. (update_bb_profile_for_threading): Update prototype. * cfgbuild.c (find_bb_boundaries): Do not update frequencies. (find_many_sub_basic_blocks): Likewise. * cfgcleanup.c (try_forward_edges): Likewise. (try_crossjump_to_edge): Likewise. * cfgexpand.c (expand_gimple_cond): Likewise. (expand_gimple_tailcall): Likewise. (construct_init_block): Likewise. (construct_exit_block): Likewise. * cfghooks.c (verify_flow_info): Check consistency of counts. (dump_bb_for_graph): Do not dump frequencies. (split_block_1): Do not update frequencies. (split_edge): Do not update frequencies. (make_forwarder_block): Do not update frequencies. (duplicate_block): Do not update frequencies. (account_profile_record): Do not update frequencies. * cfgloop.c (find_subloop_latch_edge_by_profile): Use IPA counts for global heuristics. * cfgloopanal.c (average_num_loop_insns): Update to use to_frequency. (expected_loop_iterations_unbounded): Use counts only. * cfgloopmanip.c (scale_loop_profile): Simplify. (create_empty_loop_on_edge): Simplify (loopify): Simplify (duplicate_loop_to_header_edge): Simplify * cfgrtl.c (force_nonfallthru_and_redirect): Update profile. (update_br_prob_note): Take care of removing note when profile becomes undefined. (relink_block_chain): Do not dump frequency. (rtl_account_profile_record): Use to_frequency. * cgraph.c (symbol_table::create_edge): Convert count to ipa count. (cgraph_edge::redirect_call_stmt_to_calle): Conver tcount to ipa count. (cgraph_update_edges_for_call_stmt_node): Likewise. (cgraph_edge::verify_count_and_frequency): Update. (cgraph_node::verify_node): Temporarily disable frequency verification. * cgraphbuild.c (compute_call_stmt_bb_frequency): Use to_cgraph_frequency. (cgraph_edge::rebuild_edges): Convert to ipa counts. * cgraphunit.c (init_lowered_empty_function): Do not initialize frequencies. (cgraph_node::expand_thunk): Update profile. * except.c (dw2_build_landing_pads): Do not update frequency. * final.c (compute_alignments): Use to_frequency. (dump_basic_block_info): Do not dump frequency. * gimple-pretty-print.c (dump_profile): Do not dump frequency. (dump_gimple_bb_header): Do not dump frequency. * gimple-ssa-isolate-paths.c (isolate_path): Do not update frequency; do update count. * gimple-streamer-in.c (input_bb): Do not stream frequency. * gimple-streamer-out.c (output_bb): Do not stream frequency. * haifa-sched.c (sched_pressure_start_bb): Use to_freuqency. (init_before_recovery): Do not update frequency. (sched_create_recovery_edges): Do not update frequency. * hsa-gen.c (convert_switch_statements): Do not update frequency. * ipa-cp.c (ipcp_propagate_stage): Update search for max_count. (ipa_cp_c_finalize): Set max_count to uninitialized. * ipa-fnsummary.c (get_minimal_bb): Use counts. (param_change_prob): Use counts. * ipa-profile.c (ipa_profile_generate_summary): Do not summarize local profiles. * ipa-split.c (consider_split): Use to_frequency. (split_function): Use to_frequency. * ira-build.c (loop_compare_func): Likewise. (mark_loops_for_removal): Likewise. (mark_all_loops_for_removal): Likewise. * loop-doloop.c (doloop_modify): Do not update frequency. * loop-unroll.c (unroll_loop_runtime_iterations): Do not update frequency. * lto-streamer-in.c (input_function): Update count_max. * omp-expand.c (expand_omp_taskreg): Update count_max. * omp-simd-clone.c (simd_clone_adjust): Update profile. * predict.c (maybe_hot_frequency_p): Use to_frequency. (maybe_hot_count_p): Use ipa counts only. (maybe_hot_bb_p): Simplify. (maybe_hot_edge_p): Simplify. (probably_never_executed): Do not take frequency argument. (probably_never_executed_bb_p): Do not pass frequency. (probably_never_executed_edge_p): Likewise. (combine_predictions_for_bb): Check that profile is nonzero. (propagate_freq): Do not set frequency. (drop_profile): Simplify. (counts_to_freqs): Simplify. (expensive_function_p): Use to_frequency. (propagate_unlikely_bbs_forward): Simplify. (determine_unlikely_bbs): Simplify. (estimate_bb_frequencies): Add hack to silence graphite issues. (compute_function_frequency): Use ipa counts. (pass_profile::execute): Update. (rebuild_frequencies): Use counts only. (force_edge_cold): Use counts only. * profile-count.c (profile_count::dump): Dump new count types. (profile_count::differs_from_p): Check compatiblity. (profile_count::to_frequency): New function. (profile_count::to_cgraph_frequency): New function. * profile-count.h (struct function): Declare. (enum profile_quality): Add profile_guessed_local and profile_guessed_global0. (class profile_proability): Decrease number of bits to 29; update from_reg_br_prob_note and to_reg_br_prob_note. (class profile_count: Update comment; decrease number of bits to 61. Check compatibility. (profile_count::compatible_p): New private member function. (profile_count::ipa_p): New member function. (profile_count::operator<): Handle global zero correctly. (profile_count::operator>): Handle global zero correctly. (profile_count::operator<=): Handle global zero correctly. (profile_count::operator>=): Handle global zero correctly. (profile_count::nonzero_p): New member function. (profile_count::force_nonzero): New member function. (profile_count::max): New member function. (profile_count::apply_scale): Handle IPA scalling. (profile_count::guessed_local): New member function. (profile_count::global0): New member function. (profile_count::ipa): New member function. (profile_count::to_frequency): Declare. (profile_count::to_cgraph_frequency): Declare. * profile.c (OVERLAP_BASE): Delete. (compute_frequency_overlap): Delete. (compute_branch_probabilities): Do not use compute_frequency_overlap. * regs.h (REG_FREQ_FROM_BB): Use to_frequency. * sched-ebb.c (rank): Use counts only. * shrink-wrap.c (handle_simple_exit): Use counts only. (try_shrink_wrapping): Use counts only. (place_prologue_for_one_component): Use counts only. * tracer.c (find_best_predecessor): Use to_frequency. (find_trace): Use to_frequency. (tail_duplicate): Use to_frequency. * trans-mem.c (expand_transaction): Do not update frequency. * tree-call-cdce.c: Do not update frequency. * tree-cfg.c (gimple_find_sub_bbs): Likewise. (gimple_merge_blocks): Likewise. (gimple_split_edge): Likewise. (gimple_duplicate_sese_region): Likewise. (gimple_duplicate_sese_tail): Likewise. (move_sese_region_to_fn): Likewise. (gimple_account_profile_record): Likewise. (insert_cond_bb): Likewise. * tree-complex.c (expand_complex_div_wide): Likewise. * tree-eh.c (lower_resx): Update profile. * tree-inline.c (copy_bb): Simplify count scaling; do not scale frequencies. (initialize_cfun): Do not initialize frequencies (freqs_to_counts): Delete. (copy_cfg_body): Ignore count parameter. (copy_body): Update. (expand_call_inline): Update count_max. (optimize_inline_calls): Update count_max. (tree_function_versioning): Update count_max. * tree-ssa-coalesce.c (coalesce_cost_bb): Use to_frequency. * tree-ssa-ifcombine.c (update_profile_after_ifcombine): Do not update frequency. * tree-ssa-loop-im.c (execute_sm_if_changed): Use counts only. * tree-ssa-loop-ivcanon.c (unloop_loops): Do not update freuqency. (try_peel_loop): Likewise. * tree-ssa-loop-ivopts.c (get_scaled_computation_cost_at): Use to_frequency. * tree-ssa-loop-manip.c (niter_for_unrolled_loop): Pass -1. (tree_transform_and_unroll_loop): Do not use frequencies * tree-ssa-loop-niter.c (estimate_numbers_of_iterations): Use reliable prediction only. * tree-ssa-loop-unswitch.c (hoist_guard): Do not use frequencies. * tree-ssa-sink.c (select_best_block): Use to_frequency. * tree-ssa-tail-merge.c (replace_block_by): Temporarily disable probability scaling. * tree-ssa-threadupdate.c (create_block_for_threading): Do not update frequency (any_remaining_duplicated_blocks): Likewise. (update_profile): Likewise. (estimated_freqs_path): Delete. (freqs_to_counts_path): Delete. (clear_counts_path): Delete. (ssa_fix_duplicate_block_edges): Likewise. (duplicate_thread_path): Likewise. * tree-switch-conversion.c (gen_inbound_check): Use counts. * tree-tailcall.c (decrease_profile): Do not update frequency. (eliminate_tail_call): Likewise. * tree-vect-loop-manip.c (vect_do_peeling): Likewise. * tree-vect-loop.c (scale_profile_for_vect_loop): Likewise. (optimize_mask_stores): Likewise. * tree-vect-stmts.c (vectorizable_simd_clone_call): Likewise. * ubsan.c (ubsan_expand_null_ifn): Update profile. (ubsan_expand_ptr_ifn): Update profile. * value-prof.c (gimple_ic): Simplify. * value-prof.h (gimple_ic): Update prototype. * ipa-inline-transform.c (inline_transform): Fix scaling conditoins. * ipa-inline.c (compute_uninlined_call_time): Be sure that counts are nonzero. (want_inline_self_recursive_call_p): Likewise. (resolve_noninline_speculation): Only cummulate defined counts. (inline_small_functions): Use nonzero_p. (ipa_inline): Do not access freed node. Unknown ChangeLog: 2017-11-02 Jan Hubicka <hubicka@ucw.cz> * testsuite/gcc.dg/no-strict-overflow-3.c (foo): Update magic value to not clash with frequency. * testsuite/gcc.dg/strict-overflow-3.c (foo): Likewise. * testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c: Update template. * testsuite/gcc.dg/tree-ssa/dump-2.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-10.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-11.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-12.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-20040816-1.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-20040816-2.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-5.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-8.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-9.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-cd.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-pr56541.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-pr68583.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-pr69489-1.c: Update template. * testsuite/gcc.dg/tree-ssa/ifc-pr69489-2.c: Update template. * testsuite/gcc.target/i386/pr61403.c: Update template. From-SVN: r254379
Jan Hubicka committed -
The Arm backend sets the default sched-pressure algorithm to SCHED_PRESSURE_MODEL. Benchmarking on AArch64 shows this speeds up floating point performance on SPEC - eg. CactusBSSN improves by ~16%. The gains are mostly due to less spilling, so enable this on AArch64 by default. gcc/ * config/aarch64/aarch64.c (aarch64_override_options_internal): Set PARAM_SCHED_PRESSURE_ALGORITHM to SCHED_PRESSURE_MODEL. From-SVN: r254378
Wilco Dijkstra committed -
GCC may generate non-legitimate address due to we allow some load/store with non-legitimate address in pic.md. gcc/ChangeLog 2017-11-03 Kito Cheng <kito.cheng@gmail.com> * config/riscv/riscv.c (riscv_legitimize_move): Handle non-legitimate address. From-SVN: r254376
Kito Cheng committed -
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00196.html * lib/scanlang.exp: Fix error message to refer to scan-lang-dump. From-SVN: r254375
Nathan Sidwell committed -
The rs6000 port currently has an *lt0_disi define_insn, setting the DI result to whether the SI argument is negative or not. It turns out the generic optimisers cannot always figure out in the other cases either that this is just a shift for us. This patch adds patterns for all four SI/DI combinations. * config/rs6000/rs6000.md (*lt0_disi): Delete. (*lt0_<mode>di, *lt0_<mode>si): New. From-SVN: r254374
Segher Boessenkool committed
-