1. 13 Nov, 2018 34 commits
    • 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
    • re PR rtl-optimization/87918 (ICE in simplify_binary_operation, at… · 6bddea17
      re PR rtl-optimization/87918 (ICE in simplify_binary_operation, at simplify-rtx.c:2153 since r264688)
      
      	PR rtl-optimization/87918
      	* simplify-rtx.c (simplify_merge_mask): For COMPARISON_P, use
      	simplify_gen_relational rather than simplify_gen_binary.
      
      	* gcc.target/i386/pr87918.c: New test.
      
      From-SVN: r266062
      Jakub Jelinek committed
    • tree-ssanames.h (set_range_info): Use value_range_base. · 9384a5af
      2018-11-13  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssanames.h (set_range_info): Use value_range_base.
      	(get_range_info): Likewise.
      	* tree-ssanames.c (set_range_info): Likewise.
      	(get_range_info): Likewise.
      	* tree-vrp.c (value_range_base::union_helper): Split
      	out common parts of value_range[_base]::union_.
      	(value_range_base::union_): Update.
      	(value_range::union_): Likewise.
      	(determine_value_range_1): Use value_range_base.
      	(determine_value_range): Likewise.
      	* tree-vrp.h (value_range_base::union_helper): Move ...
      	(value_range::union_helper): ... from here.
      
      From-SVN: r266061
      Richard Biener committed
    • linux-unwind.h (_sig_ucontext_t): Remove. · b2a71af6
      2018-11-13  Xianmiao Qu  <xianmiao_qu@c-sky.com>
      
      	libgcc/
      	* config/csky/linux-unwind.h (_sig_ucontext_t): Remove.
      	(csky_fallback_frame_state): Modify the check of the 
      	instructions to adapt to changes in the kernel
      
      From-SVN: r266060
      Xianmiao Qu committed
    • misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions for the runtime on platforms where... · 77ece7f5
      	* gcc-interface/misc.c (gnat_init_gcc_eh): Set -fnon-call-exceptions
      	for the runtime on platforms where System.Machine_Overflow is true.
      
      From-SVN: r266057
      Eric Botcazou committed
    • Implement P0315R4, Lambdas in unevaluated contexts. · 0c1e0d63
      When lambdas were added in C++11 they were banned from unevaluated contexts
      as a way to avoid needing to deal with them in mangling or SFINAE.  This
      proposal avoids that with a more narrow proposal: lambdas never compare as
      equivalent (so we don't need to mangle them), and substitution failures
      within a lambda are hard errors.  Lambdas appearing in places that types
      couldn't previously have been declared introduces various complications; in
      particular, it seems likely to mean types with no linkage being used more
      broadly, risking ODR violations.  I want to follow up this patch with some
      related diagnostics.
      
      	* decl2.c (min_vis_expr_r): Handle LAMBDA_EXPR.
      	* mangle.c (write_expression): Handle LAMBDA_EXPR.
      	* parser.c (cp_parser_lambda_expression): Allow lambdas in
      	unevaluated context.  Start the tentative firewall sooner.
      	(cp_parser_lambda_body): Use cp_evaluated.
      	* pt.c (iterative_hash_template_arg): Handle LAMBDA_EXPR.
      	(tsubst_function_decl): Substitute a lambda even if it isn't
      	dependent.
      	(tsubst_lambda_expr): Use cp_evaluated.  Always complain.
      	(tsubst_copy_and_build) [LAMBDA_EXPR]: Do nothing if tf_partial.
      	* semantics.c (begin_class_definition): Allow in template parm list.
      	* tree.c (strip_typedefs_expr): Pass through LAMBDA_EXPR.
      	(cp_tree_equal): Handle LAMBDA_EXPR.
      
      From-SVN: r266056
      Jason Merrill committed
    • Avoid double substitution with complete explicit template arguments. · 7d119905
      Previously, when we got a function template with explicit arguments for all
      of the template parameters, we still did "deduction", which of course
      couldn't deduce anything, but did other deduction-time checking of
      non-dependent conversions and such.  This broke down with the unevaluated
      lambdas patch (to follow): substituting into the lambda multiple times, once
      to get the function type for deduction and then again to generate the actual
      decl, doesn't work, since different substitutions of a lambda produce
      different types.  I believe that skipping the initial substitution when we
      have all the arguments is still conformant, and produces better diagnostics
      for some testcases.
      
      	* pt.c (fn_type_unification): If we have a full set of explicit
      	arguments, go straight to substitution.
      
      From-SVN: r266055
      Jason Merrill committed
    • decl2.c (min_vis_expr_r, [...]): New. · 7c23c87c
      	* decl2.c (min_vis_expr_r, expr_visibility): New.
      
      We weren't properly constraining visibility based on names that appear in
      the mangled representation of expressions.  This was made more obvious
      by the upcoming unevaluated lambdas patch.
      
      	(min_vis_r): Call expr_visibility.
      	(constrain_visibility_for_template): Likewise.
      
      From-SVN: r266054
      Jason Merrill committed
    • Implement P0722R3, destroying operator delete. · a6bb6b07
      A destroying operator delete takes responsibility for calling the destructor
      for the object it is deleting; this is intended to be useful for sized
      delete of a class allocated with a trailing buffer, where the compiler can't
      know the size of the allocation, and so would pass the wrong size to the
      non-destroying sized operator delete.
      
      gcc/c-family/
      	* c-cppbuiltin.c (c_cpp_builtins): Define
      	__cpp_impl_destroying_delete.
      gcc/cp/
      	* call.c (std_destroying_delete_t_p, destroying_delete_p): New.
      	(aligned_deallocation_fn_p, usual_deallocation_fn_p): Use
      	destroying_delete_p.
      	(build_op_delete_call): Handle destroying delete.
      	* decl2.c (coerce_delete_type): Handle destroying delete.
      	* init.c (build_delete): Don't call dtor with destroying delete.
      	* optimize.c (build_delete_destructor_body): Likewise.
      libstdc++-v3/
      	* libsupc++/new (std::destroying_delete_t): New.
      
      From-SVN: r266053
      Jason Merrill committed
    • Implement P0780R2, pack expansion in lambda init-capture. · 7de37c97
      Mostly this was straightforward; the tricky bit was finding, in the
      instantiation, the set of capture proxies built when instantiating the
      init-capture.  The comment in lookup_init_capture_pack goes into detail.
      
      	* parser.c (cp_parser_lambda_introducer): Parse pack init-capture.
      	* pt.c (tsubst_pack_expansion): Handle init-capture packs.
      	(lookup_init_capture_pack): New.
      	(tsubst_expr) [DECL_EXPR]: Use it.
      	(tsubst_lambda_expr): Remember field pack expansions for
      	init-captures.
      
      From-SVN: r266052
      Jason Merrill committed
    • cp-tree.h (struct cp_evaluated): New. · 16e723e6
      	* cp-tree.h (struct cp_evaluated): New.
      
      This patch simplifies the saving/clearing/restoring of
      cp_unevaluated_operand and c_inhibit_evaluation_warnings in the presence of
      mid-block returns.
      
      	* init.c (get_nsdmi): Use it.
      	* parser.c (cp_parser_enclosed_template_argument_list): Use it.
      	* pt.c (coerce_template_parms, tsubst_aggr_type): Use it.
      
      From-SVN: r266051
      Jason Merrill committed
    • Change __cpp_explicit_bool to __cpp_conditional_explicit. · e4bd6d5e
      People objected to the old macro name as unclear, so it was changed.
      
      	* c-cppbuiltin.c (c_cpp_builtins): Change __cpp_explicit_bool to
      	__cpp_conditional_explicit.
      
      From-SVN: r266050
      Jason Merrill committed
    • [RS6000] secondary_reload and find_replacement · 7877f4e0
      This patch removes a call only necessary when using reload.  It also
      corrects a PRE_DEC address offset.
      
      	* config/rs6000/rs6000.c (rs6000_secondary_reload_inner): Negate
      	offset for PRE_DEC.
      	(rs6000_secondary_reload_gpr): Don't call find_replacement.
      
      From-SVN: r266049
      Alan Modra committed
    • re PR middle-end/59634 (Documentation (info/man page): lack of information for… · c6459f2d
      re PR middle-end/59634 (Documentation (info/man page): lack of information for cache size parameters (--param))
      
      2018-11-13  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR middle-end/59634
      
      	gcc/
      	* doc/invoke.texi (Optimize Options): Clarify that the
      	l1-cache-line-size, l1-cache-size, and l2-cache-size parameters
      	apply to data cache size.
      
      From-SVN: r266048
      Sandra Loosemore committed
    • [RS6000] Comment fixes · 620f2b17
      	* config/rs6000/rs6000.c (rs6000_emit_prologue): Comment fix.
      
      From-SVN: r266047
      Alan Modra committed
    • [RS6000] Rotate testcase · 21edd5af
      The testcase exercises one of the rotate patterns.
      
      gcc/
      	* config/rs6000/predicates.md (logical_const_operand),
      	(logical_operand): Correct comment.
      gcc/testsuite/
      	* gcc.target/powerpc/rotmask.c: New.
      
      From-SVN: r266046
      Alan Modra committed
    • [RS6000] Hide insn not needing to be public · ee0d2718
      	* config/rs6000/rs6000.md (addsi3_high): Prefix with '*'.
      
      From-SVN: r266045
      Alan Modra committed
    • [RS6000] Ignore "c", "l" and "h" for register preference · ab950374
      This catches a few places where move insn patterns don't slightly
      disparage CTR, LR and VRSAVE regs.  Also fixes the doc for the rs6000
      h constraint, and removes an r->cl alternative covered by r->h.
      
      	* gcc/doc/md.texi (Machine Constraints): Correct rs6000 h constraint
      	description.
      	* config/rs6000/rs6000.md (movsi_internal1): Delete MT%0 case
      	covered by alternative.
      	(movcc_internal1): Ignore h for register preference.
      	(mov<mode>_hardfloat64): Likewise.
      	(mov<mode>_softfloat): Ignore c, l, h for register preference.
      
      From-SVN: r266044
      Alan Modra committed
    • re PR preprocessor/47823 (#pragma once is documented in a weird spot) · 37e5eefb
      2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR preprocessor/47823
      
      	gcc/
      	* doc/cpp.texi (Alternatives to Wrapper #ifndef): Move #pragma once
      	documentation to...
      	(Pragmas): ...here.  
      	* doc/extend.texi (Pragmas): Note additional pragmas documented
      	in the CPP manual.
      
      From-SVN: r266043
      Sandra Loosemore committed
    • Daily bump. · 85177e10
      From-SVN: r266042
      GCC Administrator committed
  2. 12 Nov, 2018 6 commits