aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2017-11-06Rework vrp_int_const_binop interfaceRichard Sandiford2-83/+67
...to avoid a warning about uninitialised wide_ints. 2017-11-06 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * tree-vrp.c (vrp_int_const_binop): Return true on success and return the value by pointer. (extract_range_from_multiplicative_op_1): Update accordingly. Return as soon as an operation fails. From-SVN: r254436
2017-11-06Daily bump.GCC Administrator1-1/+1
From-SVN: r254435
2017-11-05re PR fortran/82471 (Reorder loop for unfavorable index ordering in DO ↵Thomas Koenig7-21/+270
CONCURRENT and FORALL) 2017-11-05 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82471 * lang.opt (ffrontend-loop-interchange): New option. (Wfrontend-loop-interchange): New option. * options.c (gfc_post_options): Handle ffrontend-loop-interchange. * frontend-passes.c (gfc_run_passes): Run optimize_namespace if flag_frontend_optimize or flag_frontend_loop_interchange are set. (optimize_namespace): Run functions according to flags set; also call index_interchange. (ind_type): New function. (has_var): New function. (index_cost): New function. (loop_comp): New function. 2017-11-05 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/82471 * gfortran.dg/loop_interchange_1.f90: New test. From-SVN: r254430
2017-11-05re PR fortran/78641 ([OOP] ICE on polymorphic allocatable function in array ↵Paul Thomas5-1/+55
constructor) 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/78641 * resolve.c (resolve_ordinary_assign): Do not add the _data component for class valued array constructors being assigned to derived type arrays. * trans-array.c (gfc_trans_array_ctor_element): Take the _data of class valued elements for assignment to derived type arrays. 2017-11-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/78641 * gfortran.dg/class_66.f90: New test. From-SVN: r254428
2017-11-05re PR fortran/81447 ([7/8] gfortran fails to recognize the exact dynamic ↵Paul Thomas11-23/+112
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
2017-11-05Remove semicolon after do {} while (0) in DEF_SANITIZER_BUILTINTom de Vries2-6/+18
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
2017-11-05Remove semicolon after ASM_OUTPUT_BEFORE_CASE_LABEL macro bodyTom de Vries6-7/+20
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
2017-11-05[fortran] Remove semicolon after do {} while (0) in match macrosTom de Vries2-6/+12
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
2017-11-05[graphite] Remove semicolon after do {} while (0) in DEBUG_PRINTTom de Vries2-1/+7
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
2017-11-05RISC-V: Emit "i" suffix for instructions with immediate operandsMichael Clark3-19/+45
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
2017-11-05RISC-V: If -m[no-]strict-align is not passed, assume its value from -mtuneAndrew Waterman2-1/+10
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
2017-11-05RISC-V: Set SLOW_BYTE_ACCESS=1Andrew Waterman2-1/+10
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
2017-11-05Daily bump.GCC Administrator1-1/+1
From-SVN: r254415
2017-11-04PR target/82002 Part 2: Correct non-immediate offset/invalid INSNDaniel Santos5-17/+64
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
2017-11-04trans-expr.c (gfc_trans_assignment_1): Character kind conversion may create ↵Andre Vehreschild6-11/+95
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
2017-11-04re PR fortran/70330 (ICE with -Wextra -Wno-unused-dummy-argument and unused ↵Thomas Koenig2-0/+12
optional dummy argument) 2017-11-04 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/70330 * gfortran.dg/pr70330.f90: New test. From-SVN: r254406
2017-11-04re PR fortran/29600 ([F03] MINLOC and MAXLOC take an optional KIND argument)Thomas Koenig8-21/+150
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
2017-11-04re PR fortran/81735 (double free or corruption (fasttop) error (SIGABRT) ↵Paul Thomas4-5/+40
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
2017-11-04re PR fortran/82796 (Private+equivalence in used module breaks compilation ↵Steven G. Kargl4-3/+80
of pure function) 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
2017-11-04Daily bump.GCC Administrator1-1/+1
From-SVN: r254402
2017-11-03re PR target/82823 (ICE in ix86_expand_prologue, at config/i386/i386.c:13171 ↵Jeff Law2-0/+29
with -fstack-clash-protection) PR target/82823 * g++.dg/torture/pr82823.C: New test. From-SVN: r254398
2017-11-03Add BZ marker to a recent changeJeff Law1-0/+1
From-SVN: r254397
2017-11-03i386.c (ix86_emit_restore_reg_using_pop): Prototype.Jeff Law4-2/+39
* 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
2017-11-03re PR tree-optimization/78821 (GCC7: Copying whole 32 bits structure field ↵Jakub Jelinek5-290/+1230
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
2017-11-032017-11-3 Steven G. Kargl <kargl@gcc.gnu.org>Steven G. Kargl2-1/+5
* gfortran.dg/large_real_kind_2.F90: Test passes on FreeBSD. Remove dg-xfail-if directive. From-SVN: r254390
2017-11-03Improve aarch64_legitimate_constant_pWilco Dijkstra2-30/+34
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
2017-11-03msa.c: Add -fcommon to dg-options.Sandra Loosemore2-1/+5
2017-11-03 Sandra Loosemore <sandra@codesourcery.com> gcc/testsuite/ * gcc.target/mips/msa.c: Add -fcommon to dg-options. From-SVN: r254387
2017-11-03i386.c (ix86_expand_prologue): Tighten assert for int_registers_saved.Jeff Law2-2/+9
* config/i386/i386.c (ix86_expand_prologue): Tighten assert for int_registers_saved. From-SVN: r254386
2017-11-03re PR testsuite/82828 (i386/pr70263-2.c fail)Uros Bizjak2-15/+14
PR testsuite/82828 PR rtl-optimization/70263 * gcc.target/i386/pr70263-2.c: Fix invalid testcase. From-SVN: r254385
2017-11-03re PR c++/82768 (ICE in synthesize_implicit_template_parm, at cp/parser.c:39338)Wilco Dijkstra2-9/+7
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
2017-11-03cfganal.c (single_pred_edge_ignoring_loop_edges): New function extracted ↵Jeff Law7-103/+66
from tree-ssa-dom.c. * 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
2017-11-03Generalize -(-X) a littleMarc Glisse7-4/+102
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
2017-11-03rs6000: Remove rs6000_emit_sISELSegher Boessenkool4-12/+13
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
2017-11-03asan.c (create_cond_insert_point): Maintain profile.Jan Hubicka91-1036/+1049
* 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
2017-11-03Set default sched pressure algorithmWilco Dijkstra2-0/+10
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
2017-11-03RISC-V: Handle non-legitimate address in riscv_legitimize_moveKito Cheng2-0/+21
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
2017-11-03[PATCH] Fix testsuire error messageNathan Sidwell2-2/+4
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
2017-11-03rs6000: Improve *lt0 patternsSegher Boessenkool2-4/+17
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
2017-11-03rs6000: move_from_CR_ov_bit is TARGET_PAIRED_FLOAT, not TARGET_ISELSegher Boessenkool2-1/+6
* config/rs6000/rs6000.md (move_from_CR_ov_bit): Change condition to TARGET_PAIRED_FLOAT. From-SVN: r254373
2017-11-03[aarch64] Add Qualcomm saphira CPU support.Siddhesh Poyarekar5-2/+43
This patch adds an mcpu option for the Qualcomm saphira server part. Tested on aarch64 and did not find any regressions resulting from this patch. 2017-11-03 Siddhesh Poyarekar <siddhesh.poyarekar@linaro.org> Jim Wilson <jim.wilson@linaro.org> * config/aarch64/aarch64-cores.def (saphira): New CPU. * config/aarch64/aarch64-tune.md: Regenerated. * doc/invoke.texi (AArch64 Options/-mtune): Add "saphira". * gcc/config/aarch64/aarch64.c (saphira_tunings): New tuning table. Co-Authored-By: Jim Wilson <jim.wilson@linaro.org> From-SVN: r254372
2017-11-03[PR c++/82710] false positive paren warningNathan Sidwell4-7/+36
https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00186.html PR c++/82710 * decl.c (grokdeclarator): Protect MAYBE_CLASS things from paren warning too. PR c++/82710 * g++.dg/warn/pr82710.C: More cases. From-SVN: r254371
2017-11-03[ARC] Fix to unwinding.Cupertino Miranda3-6/+44
gcc/ChangeLog: 2017-11-03 Cupertino Miranda <cmiranda@synopsys.com> * config/arc/arc.c (arc_save_restore): Corrected CFA note. (arc_expand_prologue): Restore blink for millicode. * config/arc/linux.h (LINK_EH_SPEC): Defined. libgcc/ChangeLog: 2017-11-03 Cupertino Miranda <cmiranda@synopsys.com> Vineet Gupta <vgupta@synopsys.com> * config.host (arc*-*-linux*): Set md_unwind_header variable. * config/arc/linux-unwind-reg.def: New file. * config/arc/linux-unwind.h: Likewise. Co-Authored-By: Vineet Gupta <vgupta@synopsys.com> From-SVN: r254367
2017-11-03PR82809: register handling in ix86_vector_duplicate_valueRichard Sandiford4-1/+33
When adding the call to gen_vec_duplicate, I failed to notice that code further down modified the VEC_DUPLICATE in place. That isn't safe if gen_vec_duplicate returned a const_vector. 2017-11-02 Richard Sandiford <richard.sandiford@linaro.org> gcc/ PR target/82809 * config/i386/i386.c (ix86_vector_duplicate_value): Use gen_vec_duplicate after forcing the scalar into a register. gcc/testsuite/ * gcc.dg/pr82809.c: New test. From-SVN: r254366
2017-11-03combine: Print insns we try to combineSegher Boessenkool2-0/+12
This adds some extra debug info to the dump file for combine: print the insns that are input to try_combine. I was worried printing more will make the dump file only harder to read, but especially the info from the REG_DEAD notes is invaluable. * combine (try_combine): Print the insns input to try_combine to the dump file. From-SVN: r254365
2017-11-03Daily bump.GCC Administrator1-1/+1
From-SVN: r254364
2017-11-03re PR c++/81957 (ICE decltype)Paolo Carlini6-15/+63
/cp 2017-11-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81957 * pt.c (make_pack_expansion): Add tsubst_flags_t parameter. (expand_integer_pack, convert_template_argument, coerce_template_parms, gen_elem_of_pack_expansion_instantiation, tsubst_pack_expansion, unify): Adjust calls. * tree.c (cp_build_qualified_type_real): Likewise. * cp-tree.h (make_pack_expansion): Adjust declaration. /testsuite 2017-11-02 Paolo Carlini <paolo.carlini@oracle.com> PR c++/81957 * g++.dg/cpp0x/variadic-crash5.C: New. From-SVN: r254361
2017-11-02re PR target/79868 (aarch64: diagnostic "malformed target %s value" not ↵Steve Ellcey7-11/+22
translateable) PR target/79868 * gcc.target/aarch64/spellcheck_1.c: Update dg-error string to match new format. * gcc.target/aarch64/spellcheck_2.c: Ditto. * gcc.target/aarch64/spellcheck_3.c: Ditto. * gcc.target/aarch64/target_attr_11.c: Ditto. * gcc.target/aarch64/target_attr_12.c: Ditto. * gcc.target/aarch64/target_attr_17.c: Ditto. From-SVN: r254360
2017-11-02re PR target/79868 (aarch64: diagnostic "malformed target %s value" not ↵Steve Ellcey4-56/+56
translateable) PR target/79868 * config/aarch64/aarch64-c.c (aarch64_pragma_target_parse): Remove second argument from aarch64_process_target_attr call. * config/aarch64/aarch64-protos.h (aarch64_process_target_attr): Ditto. * config/aarch64/aarch64.c (aarch64_attribute_info): Change field type. (aarch64_handle_attr_arch): Remove second argument. (aarch64_handle_attr_cpu): Ditto. (aarch64_handle_attr_tune): Ditto. (aarch64_handle_attr_isa_flags): Ditto. (aarch64_process_one_target_attr): Ditto. (aarch64_process_target_attr): Ditto. (aarch64_option_valid_attribute_p): Remove second argument. on aarch64_process_target_attr call. From-SVN: r254359
2017-11-02Add selftest for diagnostic_get_location_textDavid Malcolm2-0/+48
gcc/ChangeLog: * diagnostic.c: Include "selftest-diagnostic.h". (selftest::assert_location_text): New function. (selftest::test_diagnostic_get_location_text): New function. (selftest::diagnostic_c_tests): Call it. From-SVN: r254355
2017-11-02Move selftest::test_diagnostic_context to its own headerDavid Malcolm5-29/+121
It's useful to not rely on global_dc in selftests, so this patch moves class selftest::test_diagnostic_context from diagnostic-show-locus.c to a new header and source file. gcc/ChangeLog: * Makefile.in (OBJS-libcommon): Add selftest-diagnostic.o. * diagnostic-show-locus.c: Include "selftest-diagnostic.h". (class selftest::test_diagnostic_context): Move to... * selftest-diagnostic.c: New file. * selftest-diagnostic.h: New file. From-SVN: r254354