1. 14 Nov, 2018 10 commits
    • [Ada] Use Cancel_Special_Output instead of Set_Special_Output with null · e3548b69
      I believe Cancel_Special_Output is easier to read and thus preferred;
      otherwise, it wouldn't be introduced, so let's use it where possible.
      
      2018-11-14  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* bindgen.adb, exp_cg.adb, repinfo.adb, sprint.adb: Minor reuse
      	Cancel_Special_Output where possible.
      
      From-SVN: r266110
      Piotr Trojanek committed
    • [Ada] Fix parentheses in comments and "library-level" punctuation · ae93ccb2
      When acting as an adjective, it is "library-level something"; when
      acting as a noun, it is "something at the library level".
      
      2018-11-14  Piotr Trojanek  <trojanek@adacore.com>
      
      gcc/ada/
      
      	* exp_dbug.ads, sem_util.ads: Minor fixes in comments.
      
      From-SVN: r266109
      Piotr Trojanek committed
    • [Ada] Handle -gx switches explicitly · fb620f0e
      2018-11-14  Arnaud Charlet  <charlet@adacore.com>
      
      gcc/ada/
      
      	* adabkend.adb (Scan_Back_End_Switches): Handle -gx switches
      	explicitly.
      
      From-SVN: r266108
      Arnaud Charlet committed
    • re PR tree-optimization/88019 (ICE in gimplify_modify_expr, at gimplify.c:5779) · cbf9e2fe
      2018-11-14  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/88019
      	* graphite-isl-ast-to-gimple.c (ternary_op_to_tree): Rewrite
      	COND_EXPR arguments to non-trapping overflow.
      
      From-SVN: r266105
      Richard Biener committed
    • [ARC] Cleanup, fix and set LRA default. · 73dac59b
      LP_COUNT register cannot be freely allocated by the compiler as it
      size, and/or content may change depending on the ARC hardware
      configuration. Thus, make this register fixed.
      
      Remove register classes and unused constraint letters.
      
      Cleanup the implementation of conditional_register_usage hook by using
      macros instead of magic constants and removing all references to
      reg_class_contents which are bringing so much grief when lra is enabled.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.h (reg_class): Reorder registers classes, remove
      	unused register classes.
      	(REG_CLASS_NAMES): Likewise.
      	(REG_CLASS_CONTENTS): Likewise.
      	(FIXED_REGISTERS): Make lp_count fixed.
      	(BASE_REG_CLASS): Remove ACC16_BASE_REGS reference.
      	(PROGRAM_COUNTER_REGNO): Remove.
      	* config/arc/arc.c (arc_conditional_register_usage): Remove unused
      	register classes, use constants for register numbers, remove
      	reg_class_contents references.
      	(arc_process_double_reg_moves): Add asserts.
      	(arc_secondary_reload): Remove LPCOUNT_REG reference, use
      	lra_in_progress predicate.
      	(arc_init_reg_tables): Remove unused register classes.
      	(arc_register_move_cost): Likewise.
      	(arc_preferred_reload_class): Likewise.
      	(hwloop_optimize): Update rtx patterns involving lp_count
      	register.
      	(arc_return_address_register): Rename ILINK1, INLINK2 regnums
      	macros.
      	* config/arc/constraints.md ("c"): Choose between GENERAL_REGS and
      	CHEAP_CORE_REGS.  Former one will be used for LRA.
      	("Rac"): Choose between GENERAL_REGS and ALL_CORE_REGS.  Former
      	one will be used for LRA.
      	("w"): Choose between GENERAL_REGS and WRITABLE_CORE_REGS.  Former
      	one will be used for LRA.
      	("W"): Choose between GENERAL_REGS and MPY_WRITABLE_CORE_REGS.
      	Former one will be used for LRA.
      	("f"): Delete constraint.
      	("k"): Likewise.
      	("e"): Likewise.
      	("l"): Change it from register constraint to constraint.
      	* config/arc/arc.md (movqi_insn): Remove unsed lp_count constraints.
      	(movhi_insn): Likewise.
      	(movsi_insn): Update pattern.
      	(arc_lp): Likewise.
      	(dbnz): Likewise.
      	(stack_tie): Remove 'b' constraint letter.
      	(R4_REG): Define.
      	(R9_REG, R15_REG, R16_REG, R25_REG): Likewise.
      	(R32_REG, R40_REG, R41_REG, R42_REG, R43_REG, R44_REG): Likewise.
      	(R57_REG, R59_REG, PCL_REG): Likewise.
      	(ILINK1_REGNUM): Renamed to ILINK1_REG.
      	(ILINK2_REGNUM): Renamed to ILINK2_REG.
      	(Rgp): Remove.
      	(SP_REGS): Likewise.
      	(Rcw): Remove unused reg classes.
      	* config/arc/predicates.md (dest_reg_operand): Just default on
      	register_operand predicate.
      	(mpy_dest_reg_operand): Likewise.
      	(move_dest_operand): Use macros instead of constants.
      
      From-SVN: r266100
      Claudiu Zissulescu committed
    • re PR tree-optimization/87974 (ICE in vect_get_vec_def_for_stmt_copy) · f711908b
      2018-11-14  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87974
      	* tree-vect-loop.c (vectorizable_reduction): When computing
      	the vectorized reduction PHI vector type ignore constant
      	and external defs.
      
      	* g++.dg/opt/pr87974.C: New testcase.
      
      From-SVN: r266099
      Richard Biener committed
    • re PR tree-optimization/87977 (ICE: verify_ssa failed (error: definition in… · c4071191
      re PR tree-optimization/87977 (ICE: verify_ssa failed (error: definition in block 4 follows the use))
      
      	PR tree-optimization/87977
      	* tree-ssa-math-opts.c (optimize_recip_sqrt): Don't reuse division
      	stmt, build a new one and replace the old one with it.  Formatting fix.
      	Call release_ssa_name (x) if !has_other_use and !delete_div.
      	(pass_cse_reciprocals::execute): Before calling optimize_recip_sqrt
      	verify lhs of stmt is still def.
      
      	* gcc.dg/recip_sqrt_mult_1.c: Add -fcompare-debug to dg-options.
      	* gcc.dg/recip_sqrt_mult_2.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_3.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_4.c: Likewise.
      	* gcc.dg/recip_sqrt_mult_5.c: Likewise.
      
      From-SVN: r266098
      Jakub Jelinek committed
    • re PR rtl-optimization/87507 (IRA unnecessarily uses non-volatile registers… · 38e60111
      re PR rtl-optimization/87507 (IRA unnecessarily uses non-volatile registers during register assignment)
      
      gcc/
      	PR rtl-optimization/87507
      	* lower-subreg.c (operand_for_swap_move_operator): New function.
      	(simple_move): Strip simple operators.
      	(find_pseudo_copy): Likewise.
      	(resolve_operand_for_swap_move_operator): New function.
      	(resolve_simple_move): Strip simple operators and swap operands.
      
      gcc/testsuite/
      	PR rtl-optimization/87507
      	* gcc.target/powerpc/pr87507.c: New test.
      	* gcc.target/powerpc/pr68805.c: Update expected results.
      
      From-SVN: r266097
      Peter Bergner committed
    • Daily bump. · 72931dea
      From-SVN: r266096
      GCC Administrator committed
    • re PR tree-optimization/87898 (ICE in separate_decls_in_region_debug, at tree-parloops.c:961) · 66146c90
      	PR tree-optimization/87898
      	* omp-simd-clone.c (ipa_simd_modify_stmt_ops): Formatting fix.
      	(ipa_simd_modify_function_body): Remove debug stmts where the first
      	argument was changed into a non-decl.
      
      	* gcc.dg/gomp/pr87898.c: New test.
      
      From-SVN: r266093
      Jakub Jelinek committed
  2. 13 Nov, 2018 30 commits
    • Fix error when selecting number of memory pools · b76a1b36
      	* src/c++17/memory_resource.cc (select_num_pools): Fix off-by-one
      	error when block_size is equal to one of the values in the array.
      
      From-SVN: r266092
      Jonathan Wakely committed
    • Fix unused parameter warnings introduced in earlier patch · 6c4a1d38
      	* src/c++17/memory_resource.cc (_Pool::deallocate): Restore
      	attributes to parameters that are only used in assertions.
      
      From-SVN: r266091
      Jonathan Wakely committed
    • Remove redundant loop in unsynchronized_pool_resource code · b6b18271
      	* src/c++17/memory_resource.cc (bitset::find_first_unset()): Remove
      	unused function.
      	(bitset::get_first_unset()): Remove loop, if there's are unset bits
      	then _M_next_word refers to the first one and there's no need to loop.
      	(_Pool::_Pool(size_t, size_t), _Pool::block_size()): Remove dead code.
      
      From-SVN: r266090
      Jonathan Wakely committed
    • Improve handling of pool_options::largest_required_pool_block · f2e00585
      Make the munge_options function round the largest_required_pool_block
      value to a multiple of the smallest pool size (currently 8 bytes) to
      avoid pools with odd sizes.
      
      Ensure there is a pool large enough for blocks of the requested size.
      Previously when largest_required_pool_block was exactly equal to one of
      the pool_sizes[] values there would be no pool of that size. This patch
      increases _M_npools by one, so there is a pool at least as large as the
      requested value. It also reduces the size of the largest pool to be no
      larger than needed.
      
      	* src/c++17/memory_resource.cc (munge_options): Round up value of
      	largest_required_pool_block to multiple of smallest pool size. Round
      	excessively large values down to largest pool size.
      	(select_num_pools): Increase number of pools by one unless it exactly
      	matches requested largest_required_pool_block.
      	(__pool_resource::_M_alloc_pools()): Make largest pool size equal
      	largest_required_pool_block.
      	* testsuite/20_util/unsynchronized_pool_resource/options.cc: Check
      	that pool_options::largest_required_pool_block is set appropriately.
      
      From-SVN: r266089
      Jonathan Wakely committed
    • Fix incorrect assertion when deallocating big block · d3306a84
      Since a big_block rounds up the size to a multiple of big_block::min it
      is wrong to assert that the supplied number of bytes equals the
      big_block's size(). Add big_block::alloc_size(size_t) to calculate the
      allocated size consistently, and add comments to the code.
      
      	* src/c++17/memory_resource.cc (big_block): Improve comments.
      	(big_block::all_ones): Remove.
      	(big_block::big_block(size_t, size_t)): Use alloc_size.
      	(big_block::size()): Add comment, replace all_ones with equivalent
      	expression.
      	(big_block::align()): Shift value of correct type.
      	(big_block::alloc_size(size_t)): New function to round up size.
      	(__pool_resource::allocate(size_t, size_t)): Add comment.
      	(__pool_resource::deallocate(void*, size_t, size_t)): Likewise. Fix
      	incorrect assertion by using big_block::alloc_size(size_t).
      	* testsuite/20_util/unsynchronized_pool_resource/allocate.cc: Add
      	more tests for unpooled allocations.
      
      From-SVN: r266088
      Jonathan Wakely committed
    • Fix overflows in std::pmr::unsynchonized_pool_resource · 6bdd58f7
      	* src/c++17/memory_resource.cc (bitset::full()): Handle edge case
      	for _M_next_word maximum value.
      	(bitset::get_first_unset(), bitset::set(size_type)): Use
      	update_next_word() to update _M_next_word.
      	(bitset::update_next_word()): New function, avoiding wraparound of
      	unsigned _M_next_word member.
      	(bitset::max_word_index()): New function.
      	(chunk::chunk(void*, uint32_t, void*, size_t)): Add assertion.
      	(chunk::max_bytes_per_chunk()): New function.
      	(pool::replenish(memory_resource*, const pool_options&)): Prevent
      	_M_blocks_per_chunk from exceeding max_blocks_per_chunk or from
      	causing chunk::max_bytes_per_chunk() to be exceeded.
      	* testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc:
      	New test.
      
      From-SVN: r266087
      Jonathan Wakely committed
    • re PR middle-end/87899 (r264897 cause mis-compiled native arm-linux-gnueabihf toolchain) · 874e50cb
      gcc/
      	PR rtl-optimization/87899
      	* lra-lives.c (start_living): Update white space in comment.
      	(enum point_type): New.
      	(sparseset_contains_pseudos_p): New function.
      	(update_pseudo_point): Likewise.
      	(make_hard_regno_live): Use HARD_REGISTER_NUM_P macro.
      	(make_hard_regno_dead): Likewise.  Remove ignore_reg_for_conflicts
      	handling.  Move early exit after adding conflicts.
      	(mark_pseudo_live): Use HARD_REGISTER_NUM_P macro.  Add early exit
      	if regno is already live.  Remove all handling of program points.
      	(mark_pseudo_dead): Use HARD_REGISTER_NUM_P macro.  Add early exit
      	after adding conflicts.  Remove all handling of program points and
      	ignore_reg_for_conflicts.
      	(mark_regno_live): Use HARD_REGISTER_NUM_P macro.  Remove return value
      	and do not guard call to mark_pseudo_live.
      	(mark_regno_dead): Use HARD_REGISTER_NUM_P macro.  Remove return value
      	and do not guard call to mark_pseudo_dead.
      	(check_pseudos_live_through_calls): Use HARD_REGISTER_NUM_P macro.
      	(process_bb_lives): Use HARD_REGISTER_NUM_P and HARD_REGISTER_P macros.
      	Use new function update_pseudo_point.  Handle register copies by
      	removing the source register from the live set.  Handle INOUT operands.
      	Update to the next program point using the unused_set, dead_set and
      	start_dying sets.
      	(lra_create_live_ranges_1): Use HARD_REGISTER_NUM_P macro.
      
      From-SVN: r266086
      Peter Bergner committed
    • Eliminate source_location in favor of location_t · 620e594b
      Historically GCC used location_t, while libcpp used source_location.
      
      This inconsistency has been annoying me for a while, so this patch
      removes source_location in favor of location_t throughout
      (as the latter is shorter).
      
      gcc/ChangeLog:
      	* builtins.c: Replace "source_location" with "location_t".
      	* diagnostic-show-locus.c: Likewise.
      	* diagnostic.c: Likewise.
      	* dumpfile.c: Likewise.
      	* gcc-rich-location.h: Likewise.
      	* genmatch.c: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* input.c: Likewise.
      	* input.h: Likewise.  Eliminate the typedef.
      	* omp-expand.c: Likewise.
      	* selftest.h: Likewise.
      	* substring-locations.h (get_source_location_for_substring):
      	Rename to..
      	(get_location_within_string): ...this.
      	* tree-cfg.c: Replace "source_location" with "location_t".
      	* tree-cfgcleanup.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-phinodes.h: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssa.h: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      
      gcc/c-family/ChangeLog:
      	* c-common.c (c_get_substring_location): Update for renaming of
      	get_source_location_for_substring to get_location_within_string.
      	* c-lex.c: Replace "source_location" with "location_t".
      	* c-opts.c: Likewise.
      	* c-ppoutput.c: Likewise.
      
      gcc/c/ChangeLog:
      	* c-decl.c: Replace "source_location" with "location_t".
      	* c-tree.h: Likewise.
      	* c-typeck.c: Likewise.
      	* gimple-parser.c: Likewise.
      
      gcc/cp/ChangeLog:
      	* call.c: Replace "source_location" with "location_t".
      	* cp-tree.h: Likewise.
      	* cvt.c: Likewise.
      	* name-lookup.c: Likewise.
      	* parser.c: Likewise.
      	* typeck.c: Likewise.
      
      gcc/fortran/ChangeLog:
      	* cpp.c: Replace "source_location" with "location_t".
      	* gfortran.h: Likewise.
      
      gcc/go/ChangeLog:
      	* go-gcc-diagnostics.cc: Replace "source_location" with "location_t".
      	* go-gcc.cc: Likewise.
      	* go-linemap.cc: Likewise.
      	* go-location.h: Likewise.
      	* gofrontend/README: Likewise.
      
      gcc/jit/ChangeLog:
      	* jit-playback.c: Replace "source_location" with "location_t".
      
      gcc/testsuite/ChangeLog:
      	* g++.dg/plugin/comment_plugin.c: Replace "source_location" with
      	"location_t".
      	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c: Likewise.
      
      libcc1/ChangeLog:
      	* libcc1plugin.cc: Replace "source_location" with "location_t".
      	(plugin_context::get_source_location): Rename to...
      	(plugin_context::get_location_t): ...this.
      	* libcp1plugin.cc: Likewise.
      
      libcpp/ChangeLog:
      	* charset.c: Replace "source_location" with "location_t".
      	* directives-only.c: Likewise.
      	* directives.c: Likewise.
      	* errors.c: Likewise.
      	* expr.c: Likewise.
      	* files.c: Likewise.
      	* include/cpplib.h: Likewise.  Rename MAX_SOURCE_LOCATION to
      	MAX_LOCATION_T.
      	* include/line-map.h: Likewise.
      	* init.c: Likewise.
      	* internal.h: Likewise.
      	* lex.c: Likewise.
      	* line-map.c: Likewise.
      	* location-example.txt: Likewise.
      	* macro.c: Likewise.
      	* pch.c: Likewise.
      	* traditional.c: Likewise.
      
      From-SVN: r266085
      David Malcolm committed
    • PR middle-end/81824 - Warn for missing attributes with function aliases · f9731de3
      gcc/c-family/ChangeLog:
      
      	* c-attribs.c (handle_copy_attribute): Exclude inlining attributes.
      	(handle_tls_model_attribute): Improve diagnostics.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/attr-copy-5.c: New test.
      	* gcc.dg/tls/diag-6.c: Adjust expected diagnostics.
      
      From-SVN: r266084
      Martin Sebor committed
    • extend.texi: Fix typo in the weakref description. · ee8393f4
      2018-11-13  Michael Ploujnikov  <michael.ploujnikov@oracle.com>
      
      	* doc/extend.texi: Fix typo in the weakref description.
      
      From-SVN: r266083
      Michael Ploujnikov committed
    • Fix ChangeLog entry for r266080 · 95bdc37a
      From-SVN: r266082
      David Malcolm committed
    • re PR tree-optimization/86991 (ICE in vectorizable_reduction, at tree-vect-loop.c:6919) · 53467b55
      2018-11-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/86991
      	* tree-vect-loop.c (vect_is_slp_reduction): Delay reduction
      	group building until we have successfully detected the SLP
      	reduction.
      	(vect_is_simple_reduction): Remove fixup code here.
      
      	* gcc.dg/pr86991.c: New testcase.
      
      From-SVN: r266081
      Richard Biener committed
    • Ensure that dump calls are guarded with dump_enabled_p · bbeeac91
      If called when !dump_enabled_p, the dump_* functions effectively do
      nothing, but as of r263178 this doing "nothing" involves non-trivial
      work internally.
      
      I wasn't sure whether the dump_* functions should assert that
        dump_enabled_p ()
      is true when they're called, or if they should bail out immediately
      for this case, so in this patch I implemented both, so that we get
      an assertion failure, and otherwise bail out for the case where
      !dump_enabled_p when assertions are disabled.
      
      The patch also fixes all of the places I found during testing
      (on x86_64-pc-linux-gnu) that call into dump_* but which
      weren't guarded by
        if (dump_enabled_p ())
      
      gcc/ChangeLog:
      	* dumpfile.c (VERIFY_DUMP_ENABLED_P): New macro.
      	(dump_gimple_stmt): Use it.
      	(dump_gimple_stmt_loc): Likewise.
      	(dump_gimple_expr): Likewise.
      	(dump_gimple_expr_loc): Likewise.
      	(dump_generic_expr): Likewise.
      	(dump_generic_expr_loc): Likewise.
      	(dump_printf): Likewise.
      	(dump_printf_loc): Likewise.
      	(dump_dec): Likewise.
      	(dump_dec): Likewise.
      	(dump_hex): Likewise.
      	(dump_symtab_node): Likewise.
      
      gcc/ChangeLog:
      	* gimple-loop-interchange.cc (tree_loop_interchange::interchange):
      	Guard dump call with dump_enabled_p.
      	* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl): Likewise.
      	* graphite-optimize-isl.c (optimize_isl): Likewise.
      	* graphite.c (graphite_transform_loops): Likewise.
      	* tree-loop-distribution.c (pass_loop_distribution::execute): Likewise.
      	* tree-parloops.c (parallelize_loops): Likewise.
      	* tree-ssa-loop-niter.c (number_of_iterations_exit): Likewise.
      	* tree-vect-data-refs.c (vect_analyze_group_access_1): Likewise.
      	(vect_prune_runtime_alias_test_list): Likewise.
      	* tree-vect-loop.c (vect_update_vf_for_slp): Likewise.
      	(vect_estimate_min_profitable_iters): Likewise.
      	* tree-vect-slp.c (vect_record_max_nunits): Likewise.
      	(vect_build_slp_tree_2): Likewise.
      	(vect_supported_load_permutation_p): Likewise.
      	(vect_slp_analyze_operations): Likewise.
      	(vect_slp_analyze_bb_1): Likewise.
      	(vect_slp_bb): Likewise.
      	* tree-vect-stmts.c (vect_analyze_stmt): Likewise.
      	* tree-vectorizer.c (try_vectorize_loop_1): Likewise.
      	(pass_slp_vectorize::execute): Likewise.
      	(increase_alignment): Likewise.
      
      From-SVN: r266080
      David Malcolm committed
    • Fix ICE with -fopt-info-inline (PR ipa/87955) · 9228f64c
      PR ipa/87955 reports a problem I introduced in r265920, where I converted
      the guard in report_inline_failed_reason from using:
        if (dump_file)
      to using
        if (dump_enabled_p ()).
      without updating the calls to cl_target_option_print_diff and
      cl_optimization_print_diff, which assume that dump_file is non-NULL.
      
      The functions are auto-generated.  Rather than porting them to the dump
      API, this patch applies the workaround of adding the missing checks on
      dump_file before calling them.
      
      gcc/ChangeLog:
      	PR ipa/87955
      	* ipa-inline.c (report_inline_failed_reason): Guard calls to
      	cl_target_option_print_diff and cl_optimization_print_diff with
      	if (dump_file).
      
      gcc/testsuite/ChangeLog:
      	PR ipa/87955
      	* gcc.target/i386/pr87955.c: New test.
      
      From-SVN: r266079
      David Malcolm committed
    • -fsave-optimization-record: compress the output using zlib · be40afb2
      gcc/ChangeLog:
      	* doc/invoke.texi (-fsave-optimization-record): Note that the
      	output is compressed.
      	* optinfo-emit-json.cc: Include <zlib.h>.
      	(optrecord_json_writer::write): Compress the output.
      
      From-SVN: r266078
      David Malcolm committed
    • tree-vrp.c (value_range_base::dump): Dump type. · f824e18c
      	* tree-vrp.c (value_range_base::dump): Dump type.
      	Do not use INF nomenclature for 1-bit types.
      	(dump_value_range): Group all variants to common dumping code.
      	(debug): New overloaded functions for value_ranges.
      	(value_range_base::dump): Remove no argument version.
      	(value_range::dump): Same.
      
      testsuite/
      	* gcc.dg/tree-ssa/pr64130.c: Adjust for new value_range pretty
      	printer.
      	* gcc.dg/tree-ssa/vrp92.c: Same.
      
      From-SVN: r266077
      Aldy Hernandez committed
    • Move a test-case to a proper folder. · 7f9414c1
      2018-11-13  Martin Liska  <mliska@suse.cz>
      
      	* gcc.target/i386/pr87930.c: Move to ...
      	* gcc.dg/asan/pr87930.c: ... here.  Guard for i?86/x86_64 targets.
      
      From-SVN: r266076
      Martin Liska committed
    • re PR tree-optimization/87931 (ICE in vectorizable_reduction, at… · 41b32876
      re PR tree-optimization/87931 (ICE in vectorizable_reduction, at tree-vect-loop.c:6193 since r265876)
      
      2018-11-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87931
      	* tree-vect-loop.c (vect_is_simple_reduction): Restrict
      	nested cycles we support to latch computations vectorizable_reduction
      	handles.
      
      	* gcc.dg/graphite/pr87931.c: New testcase.
      
      From-SVN: r266075
      Richard Biener committed
    • Improve -fprofile-report. · 160576e1
      2018-11-13  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/87885
      	* cfghooks.c (account_profile_record): Rename
      	to ...
      	(profile_record_check_consistency): ... this.
      	Calculate missing num_mismatched_freq_in.
      	(profile_record_account_profile): New function
      	that calculates time and size of a function.
      	* cfghooks.h (struct profile_record): Remove
      	all tuples.
      	(struct cfg_hooks): Remove after_pass flag.
      	(account_profile_record): Rename to ...
      	(profile_record_check_consistency): ... this.
      	(profile_record_account_profile): New.
      	* cfgrtl.c (rtl_account_profile_record): Remove
      	after_pass flag.
      	* passes.c (check_profile_consistency): Do only
      	checking.
      	(account_profile): Calculate size and time of
      	function only.
      	(pass_manager::dump_profile_report): Reformat
      	output.
      	(execute_one_ipa_transform_pass): Call
      	consistency check before clean upand call account_profile
      	after a clean up is done.
      	(execute_one_pass): Call check_profile_consistency and
      	account_profile instead of using after_pass flag..
      	* tree-cfg.c (gimple_account_profile_record): Likewise.
      
      From-SVN: r266074
      Martin Liska committed
    • Do not allow -mabi=ms and -fsanitize={,kernel-}address (PR sanitizer/87930). · e4db210d
      2018-11-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/87930
      	* config/i386/i386.c (ix86_option_override_internal): Error
      	about usage -mabi=ms and -fsanitize={,kernel-}address.
      2018-11-13  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/87930
      	* gcc.target/i386/pr87930.c: New test.
      
      From-SVN: r266073
      Martin Liska committed
    • [PATCH][GCC] Make DR_TARGET_ALIGNMENT compile time variable · ca31798e
      This patch enables targets to describe DR_TARGET_ALIGNMENT as a compile-time
      variable.  It does so by turning the variable into a 'poly_uint64'.
      
      gcc/ChangeLog:
      2018-11-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* config/aarch64/aarch64.c
      	(aarch64_vectorize_preferred_vector_alignment): Change return type to
      	poly_uint64.
      	(aarch64_simd_vector_alignment_reachable): Adapt to preferred vector
      	alignment being a poly int.
      	* doc/tm.texi (TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT): Change
      	return type to poly_uint64.
      	* target.def (default_preferred_vector_alignment): Likewise.
      	* targhooks.c (default_preferred_vector_alignment): Likewise.
      	* targhooks.h (default_preferred_vector_alignment): Likewise.
      	* tree-vect-data-refs.c (vect_calculate_target_alignment): Likewise.
      	(vect_compute_data_ref_alignment): Adapt to vector alignment being a
      	poly int.
      	(vect_update_misalignment_for_peel): Likewise.
      	(vect_enhance_data_refs_alignment): Likewise.
      	(vect_find_same_alignment_drs): Likewise.
      	(vect_duplicate_ssa_name_ptr_info): Likewise.
      	(vect_setup_realignment): Likewise.
      	(vect_can_force_dr_alignment_p): Change alignment parameter type to
      	poly_uint64.
      	* tree-vect-loop-manip.c (get_misalign_in_elems): Learn to construct a
      	mask with a compile time variable vector alignment.
      	(vect_gen_prolog_loop_niters): Adapt to vector alignment being a poly
      	int.
      	(vect_do_peeling): Exit early if vector alignment is not constant.
      	* tree-vect-stmts.c (ensure_base_align): Adapt to vector alignment being
      	a poly int.
      	(vectorizable_store): Likewise.
      	(vectorizable_load): Likweise.
      	* tree-vectorizer.h (struct dr_vec_info): Make target_alignment field a
      	poly_uint64.
      	(vect_known_alignment_in_bytes): Adapt to vector alignment being a
      	poly int.
      	(vect_can_force_dr_alignment_p): Change alignment parameter type to
      	poly_uint64.
      
      From-SVN: r266072
      Andre Vieira committed
    • re PR tree-optimization/87962 (ICE in vect_get_vec_def_for_operand_1, at tree-vect-stmts.c:1485) · be2b68e4
      2018-11-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87962
      	* tree-vect-loop.c (vect_is_simple_reduction): More reliably
      	detect outer reduction for disqualifying in-loop uses.
      
      	* gcc.dg/pr87962.c: New testcase.
      
      From-SVN: r266071
      Richard Biener committed
    • re PR tree-optimization/87967 (ICE in slpeel_duplicate_current_defs_from_edges) · a28dfaaf
      2018-11-13  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/87967
      	* tree-vect-loop.c (vect_transform_loop): Also copy PHIs
      	for constants for the scalar loop.
      
      	* g++.dg/opt/pr87967.C: New testcase.
      
      From-SVN: r266070
      Richard Biener committed
    • [RS6000] Don't put large integer constants in TOC for -mcmodel=medium · a277ca89
      For -mcmodel=medium we can use toc-relative addressing to access
      constants placed in read-only data, which is better since they can be
      merged when in .rodata.cst8.
      
      	* config/rs6000/linux64.h (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Exclude
      	integer constants when -mcmodel=medium.
      
      From-SVN: r266069
      Alan Modra committed
    • [ARC] Add support for profiling in glibc. · 9de6af45
      Use PROFILE_HOOK to add mcount library calls in each toolchain.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.h (FUNCTION_PROFILER): Redefine to empty.
      	* config/arc/elf.h (PROFILE_HOOK): Define.
      	* config/arc/linux.h (PROFILE_HOOK): Likewise.
      
      From-SVN: r266068
      Claudiu Zissulescu committed
    • [ARC] Do not emit ZOL in the presence of text jump tables. · dddc1815
      Avoid emitting lp instruction when in its ZOL body we find a jump
      table data in text section. One of the reason is the jump tables size
      can be changed latter on, hence the total ZOL length may be wrongly
      computed.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (hwloop_optimize): Bailout when detecting a
      	jump table data in the text section.
      
      From-SVN: r266067
      Claudiu Zissulescu committed
    • [ARC] Update EH code. · 3fd6ae8a
      Our ABI says the blink is pushed first on stack followed by an unknown
      number of register saves, and finally by fp.  Hence we cannot use the
      EH_RETURN_ADDRESS macro as the stack is not finalized at that moment.
      The alternative is to use the eh_return pattern and to initialize all
      the bits after register allocation when the stack layout is finalized.
      
      gcc/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_eh_return_address_location): Repurpose it
      	to fit the eh_return pattern.
      	* config/arc/arc.md (eh_return): Define.
      	(VUNSPEC_ARC_EH_RETURN): Likewise.
      	* config/arc/arc-protos.h (arc_eh_return_address_location): Match
      	new implementation.
      	* config/arc/arc.h (EH_RETURN_HANDLER_RTX): Remove it.
      
      testsuite/
      xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* gcc.target/arc/builtin_eh.c: New test.
      
      From-SVN: r266066
      Claudiu Zissulescu committed
    • [ARC] Refurbish and improve prologue/epilogue functions. · 90b48013
      Reimplement how prologue and epilogue is emitted to accomodate
      enter/leave instructions, as well as improving the size of the
      existing techinques.
      
      The following modifications are added:
      
      - millicode thunk calls can be now selected regardless of the
        optimization level. However they are enabled for size optimizations
        by default.  Also, the millicode optimization is turned off when we
        compile for long jumps.
      
      - the compiler is able to use enter/leave instructions for prologue
        and epilogue. As these instructions are not ABI compatible we gurad
        them under a switch (i.e., -mcode-density-frame). When this option
        is on, the compiler will try emitting enter/leave instructions, if
        not, then millicode thunk calls (if enabled), and latter the regular
        push/pop instructions.
      
      - The prologue/epilogue is now optimized to use pointer walks, hence
        improving the chance to have push_s/pop_s instructions emitted. It
        also tries to combine the stack adjustments with load/store
        operations.
      
      gcc/
      xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
              * common/config/arc/arc-common.c (arc_option_optimization_table):
              Millicode optimization is default on for size optimizations.
              * config/arc/arc-protos.h (arc_check_multi): New function.
              * config/arc/arc.c (RTX_OK_FOR_OFFSET_P): Rearange.
              (ENTER_LEAVE_START_REG): Define.
              (ENTER_LEAVE_END_REG): Likewise.
              (arc_override_options): Disable millicode when long calls option
              is on.
              (arc_frame_info): Change it from int to bool.
              (arc_compute_frame_size): Clean up.
              (arc_save_restore): Remove.
              (frame_save_reg): New function.
              (frame_restore_reg): Likewise.
              (arc_enter_leave_p): Likewise.
              (arc_save_callee_saves): Likewise.
              (arc_restore_callee_saves): Likewise.
              (arc_save_callee_enter): Likewise.
              (arc_restore_callee_leave): Likewise.
              (arc_save_callee_milli): Likewise.
              (arc_restore_callee_milli): Likewise.
              (arc_expand_prologue): Reimplement to emit enter/leave
              instructions.
              (arc_expand_epilogue): Likewise.
              (arc_check_multi): New function.
              * config/arc/arc.md (push_multi_fp): New pattern.
              (push_multi_fp_blink): Likewise.
              (pop_multi_fp): Likewise.
              (pop_multi_fp_blink): Likewise.
              (pop_multi_fp_ret): Likewise.
              (pop_multi_fp_blink_ret): Likewise.
              * config/arc/arc.opt (mmillicode): Update option.
              (mcode-density-frame): New option.
              * config/arc/predicates.md (push_multi_operand): New predicate.
              (pop_multi_operand): Likewise.
              * doc/invoke.texi (ARC): Update ARC options information.
      
      gcc/testsuite
      xxxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>
      
              * gcc.target/arc/firq-1.c: Update test.
              * gcc.target/arc/firq-3.c: Likewise.
              * gcc.target/arc/firq-4.c: Likewise.
              * gcc.target/arc/interrupt-6.c: Likewise.
      
      From-SVN: r266065
      Claudiu Zissulescu committed
    • [ARC] Add peephole rules to combine store/loads into double store/loads · 8fa2c211
      Simple peephole rules which combines multiple ld/st instructions into
      64-bit load/store instructions. It only works for architectures which
      are having double load/store option on.
      
      gcc/
      	Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc-protos.h (gen_operands_ldd_std): Add.
      	* config/arc/arc.c (operands_ok_ldd_std): New function.
      	(mem_ok_for_ldd_std): Likewise.
      	(gen_operands_ldd_std): Likewise.
      	* config/arc/arc.md: Add peephole2 rules for std/ldd.
      
      From-SVN: r266064
      Claudiu Zissulescu committed
    • toplev.c (output_stack_usage): Turn test on flag_stack_usage into test on stack_usage_file. · 2cc2582c
      	* toplev.c (output_stack_usage): Turn test on flag_stack_usage into
      	test on stack_usage_file.
      	(lang_dependent_init): Do not open the .su file if generating LTO.
      
      From-SVN: r266063
      Eric Botcazou committed