1. 13 Nov, 2018 16 commits
    • 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 17 commits
    • re PR target/86677 (popcount builtin detection is breaking some kernel build) · 06a6b46a
      gcc/ChangeLog:
      
      2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/86677
      	PR middle-end/87528
      	* tree-scalar-evolution.c (expression_expensive_p): Make BUILTIN POPCOUNT
      	as expensive when backend does not define it.
      
      gcc/testsuite/ChangeLog:
      
      2018-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR middle-end/86677
      	PR middle-end/87528
      	* g++.dg/tree-ssa/pr86544.C: Run only for target supporting popcount
      	pattern.
      	* gcc.dg/tree-ssa/popcount.c: Likewise.
      	* gcc.dg/tree-ssa/popcount2.c: Likewise.
      	* gcc.dg/tree-ssa/popcount3.c: Likewise.
      	* gcc.target/aarch64/popcount4.c: New test.
      	* lib/target-supports.exp (check_effective_target_popcountl): New.
      
      From-SVN: r266039
      Kugan Vivekanandarajah committed
    • MIPS: Default to --with-llsc for the R5900 Linux target as well · 240ae287
      The Linux kernel requires and emulates LL and SC for the R5900 too.  The
      special --without-llsc default for the R5900 is therefore not applicable
      in that case.
      
      Reviewed-by: Maciej W. Rozycki <macro@linux-mips.org>
      
      2018-11-12  Fredrik Noring  <noring@nocrew.org>
      
      	gcc/
      	* config.gcc: Update with-llsc defaults for MIPS r5900.
      
      From-SVN: r266038
      Fredrik Noring committed
    • Instrument only selected files (PR gcov-profile/87442). · e18240ff
      2018-11-12  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/87442
      	* common.opt: Add -fprofile-filter-files and -fprofile-exclude-files
      	options.
      	* doc/invoke.texi: Document them.
      	* tree-profile.c (parse_profile_filter): New.
      	(parse_profile_file_filtering): Likewise.
      	(release_profile_file_filtering): Likewise.
      	(include_source_file_for_profile): Likewise.
      	(tree_profiling): Filter source files based on the
      	newly added options.
      2018-11-12  Martin Liska  <mliska@suse.cz>
      
      	PR gcov-profile/87442
      	* gcc.dg/profile-filtering-1.c: New test.
      	* gcc.dg/profile-filtering-2.c: New test.
      
      From-SVN: r266037
      Martin Liska committed
    • Fix documentation of __builtin_cpu_is and __builtin_cpu_supports for x86. · e375da43
      2018-11-12  Martin Liska  <mliska@suse.cz>
      
      	PR target/87903
      	* doc/extend.texi: Add missing values for __builtin_cpu_is and
      	__builtin_cpu_supports for x86 target.
      
      From-SVN: r266036
      Martin Liska committed
    • re PR middle-end/21110 (incorrect documentat for high and lo_sum RTL operators) · 52ed66ec
      2018-11-12  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR middle-end/21110
      
      	gcc/
      	* doc/rtl.texi (Constants): Clarify that mode of "high" doesn't
      	have to be Pmode.
      	(Arithmetic): Likewise for "lo_sum".
      
      From-SVN: r266035
      Sandra Loosemore committed
    • PR c/81824 - Warn for missing attributes with function aliases · 6f59f36b
      gcc/testsuite/ChangeLog:
      	* gcc.dg/Wattribute-alias.c: Require ifunc support.
      
      From-SVN: r266034
      Martin Sebor committed
    • [PR87815]Don't generate shift sequence for load replacement in DSE when the mode… · e6575643
      [PR87815]Don't generate shift sequence for load replacement in DSE when the mode size is not compile-time constant
      
      The patch adds a check if the gap is compile-time constant.
      
      This happens when dse decides to replace the load with previous store value.
      The problem is that, shift sequence could not accept compile-time non-constant
      mode operand.
      
      gcc/
      
      2018-11-12  Renlin Li  <renlin.li@arm.com>
      
      	PR target/87815
      	* dse.c (get_stored_val): Add check for compile-time
      	constantness of gap.
      
      gcc/testsuite/
      
      2018-11-12  Renlin Li  <renlin.li@arm.com>
      
      	PR target/87815
      	* gcc.target/aarch64/sve/pr87815.c: New.
      
      From-SVN: r266033
      Renlin Li committed
    • PR libstdc++/87963 fix build for 64-bit mingw · d5cc6de1
      	PR libstdc++/87963
      	* src/c++17/memory_resource.cc (chunk::_M_bytes): Change type from
      	unsigned to uint32_t.
      	(chunk): Fix static assertion for 64-bit targets that aren't LP64.
      	(bigblock::all_ones): Fix undefined shift.
      
      From-SVN: r266032
      Jonathan Wakely committed
    • [GCC, ARM] Enable armv8.5-a and add +sb and +predres for previous ARMv8-a in ARM · ae78a89f
      This patch adds -march=armv8.5-a to the Arm backend.
      Armv8.5-A also adds two new security features:
      - Speculation Barrier instruction
      - Execution and Data Prediction Restriction Instructions
      These are made optional to all older Armv8-A versions. Thus we are adding two
      new options "+sb" and "+predres" to all older Armv8-A. These are passed on to
      the assembler and have no code generation effects and have already gone in the
      trunk of binutils.
      
      *** gcc/ChangeLog ***
      
      2018-11-12  Sudakshina Das  <sudi.das@arm.com>
      
      	* config/arm/arm-cpus.in (armv8_5, sb, predres): New features.
      	(ARMv8_5a): New fgroup.
      	(armv8.5-a): New arch.
      	(armv8-a, armv8.1-a, armv8.2-a, armv8.3-a, armv8.4-a): New options
      	sb and predres.
      	* config/arm/arm-tables.opt: Regenerate.
      	* config/arm/t-aprofile: Add matching rules for -march=armv8.5-a
      	* config/arm/t-arm-elf (all_v8_archs): Add armv8.5-a.
      	* config/arm/t-multilib (v8_5_a_simd_variants): New variable.
      	Add matching rules for -march=armv8.5-a and extensions.
      	* doc/invoke.texi (ARM options): Document -march=armv8.5-a.
      	Add sb and predres to all armv8-a except armv8.5-a.
      
      *** gcc/testsuite/ChangeLog ***
      
      2018-11-12  Sudakshina Das  <sudi.das@arm.com>
      
      	* gcc.target/arm/multilib.exp: Add some -march=armv8.5-a
      	combination tests.
      
      From-SVN: r266031
      Sudakshina Das committed
    • 2018-11=12 Richard Biener <rguenther@suse.de> · 27922d51
      	* tree-vrp.h (value_range[_base]::set): Make public.  Provide
      	overload for single value.
      	(value_range[_base]::set_nonnull): New.
      	(value_range[_base]::set_null): Likewise.
      	(value_range): Document bitmap copying behavior, mark
      	copy constructor and assignment operator deleted.
      	(value_range::move): New.
      	(value_range::set_and_canonicalize): Default bitmap to zero.
      	(set_value_range_to_nonnull): Remove.
      	(set_value_range_to_null): Likewise.
      	(set_value_range): Likewise.
      	(set_value_range_to_value): Likewise.
      	(extract_range_from_unary_expr): Work on value_range_base.
      	(extract_range_from_binary_expr_1): Likewise.  Rename to...
      	(extract_range_from_binary_expr): ... this.
      	* tree-vrp.c (value_range::update): Clear equiv bitmap
      	if required.
      	(value_range::move): New, move equiv bitmap.
      	(value_range_base::set_undefined): Avoid assignment.
      	(value_range::set_undefined): Likewise.
      	(value_range_base::set_varying): Likewise.
      	(value_range::set_varying): Likewise.
      	(set_value_range): Remove.
      	(value_range_base::set): New overload for value.
      	(value_range::set): Likewise.
      	(set_value_range_to_nonnull): Remove.
      	(value_range_base::set_nonnull): New.
      	(value_range::set_nonnull): Likewise.
      	(set_value_range_to_null): Remove.
      	(value_range_base::set_null): New.
      	(value_range::set_null): Likewise.
      	(range_is_null): Work on value_range_base.
      	(range_is_nonnull): Likewise.
      	(ranges_from_anti_range): Likewise.
      	(extract_range_into_wide_ints): Likewise.
      	(extract_range_from_multiplicative_op): Likewise.
      	(extract_range_from_binary_expr): Likewise.  Update for API changes.
      	(extract_range_from_unary_expr): Likewise.  Remove OBJ_TYPE_REF
      	handling.
      	(value_range::intersect_helper): Avoid copy and assignment.
      	(value_range::union_helper): Likewise.
      	(determine_value_range_1): Adjust.
      	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
      	Avoid assignment by using move.
      	(evrp_range_analyzer::record_ranges_from_stmt): Avoid assignment.
      	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
      	Likewise.
      	* tree-ssanames.c (get_range_info): Likewise.
      	* vr-values.h (vr_values::get_vr_for_comparison): Adjust API.
      	* vr-values.c (vr_values::get_value_range): Adjust.
      	(vr_values::update_value_range): Likewise.
      	(symbolic_range_based_on_p): Work on value_range_base.
      	(vr_values::extract_range_from_binary_expr): Use value_range_base.
      	(vr_values::extract_range_from_unary_expr): Likewise.
      	(vr_values::extract_range_from_cond_expr): Avoid assignment.
      	(vr_values::extract_range_from_comparison): Adjust.
      	(vr_values::check_for_binary_op_overflow): Use value_range_base.
      	(vr_values::extract_range_basic): Adjust.
      	(vr_values::adjust_range_with_scev): Likewise.
      	(vr_values::vrp_visit_assignment_or_call): Likewise.
      	(vr_values::get_vr_for_comparison): Change API to avoid
      	assignment and copy construction.
      	(vr_values::compare_name_with_value): Adjust accordingly.
      	(vr_values::compare_names): Likewise.
      	(vr_values::extract_range_from_phi_node): Avoid assignment and
      	bogus in-place modify of equiv bitmap.
      	(vr_values::simplify_bit_ops_using_ranges): Use value_range_base.
      	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Adjust
      	for extract_range_from_unary_expr API change.
      	* ipa-cp.c (ipa_vr_operation_and_type_effects): Likewise.
      
      From-SVN: r266030
      Richard Biener committed
    • tree-vrp.h (value_range_base::symbolic_p, [...]): Move from value_range. · c49eeac3
      2018-11-12  Richard Biener  <rguenther@suse.de>
      
      	* tree-vrp.h (value_range_base::symbolic_p,
      	value_range_base::constant_p, value_range_base::zero_p,
      	value_range_base::singleton_p): Move from value_range.
      	(value_range::dump): Add.
      	* gimple-ssa-evrp-analyze.c
      	(evrp_range_analyzer::record_ranges_from_phis): Use set_varying.
      	* ipa-cp.c (ipcp_vr_lattice::print): Use dump_value_range.
      	* tree-ssa-threadedge.c (record_temporary_equivalences_from_phis):
      	Use set_varying.
      	* tree-vrp.c (value_range::symbolic_p): Move to value_range_base.
      	(value_range::constant_p): Likewise.
      	(value_range::singleton_p): Likewise.
      	(value_range_base::dump): Add.
      	(set_value_range_to_undefined): Remove.
      	(set_value_range_to_varying): Likewise.
      	(range_int_cst_p): Take value_range_base argument.
      	(range_int_cst_singleton_p): Likewise.
      	(value_range_constant_singleton): Likewise.
      	(vrp_set_zero_nonzero_bits): Likewise.
      	(extract_range_from_multiplicative_op): Use set_varying.
      	(extract_range_from_binary_expr_1): Likewise. Use set_undefined.
      	(extract_range_from_unary_expr): Likewise.
      	(dump_value_range_base): Change to overload of dump_value_range.
      	(vrp_prop::vrp_initialize): Use set_varying and set_undefined.
      	(vrp_prop::visit_stmt): Likewise.
      	(value_range::intersect_helper): Likewise.
      	(value_range::union_helper): Likewise.
      	(determine_value_range_1): Likewise.
      
      From-SVN: r266028
      Richard Biener committed
    • tree-vrp.c (set_value_range_to_nonnull): Clear equiv. · bdfac905
      2018-11-12  Richard Biener  <rguenther@suse.de>
      
      	* tree-vrp.c (set_value_range_to_nonnull): Clear equiv.
      	(set_value_range_to_null): Likewise.
      	* vr-values.c (vr_values::extract_range_from_comparison):
      	Clear equiv for constant singleton ranges.
      
      From-SVN: r266027
      Richard Biener committed
    • sse.md: Combine VFIXUPIMM* patterns · 682abf8d
      2018-11-12 Wei Xiao <wei3.xiao@intel.com>
      
              * config/i386/sse.md: Combine VFIXUPIMM* patterns
              (<avx512>_fixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
              (<avx512>_fixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
              (<avx512>_fixupimm<mode>_mask<round_saeonly_name>): Remove.
              (avx512f_sfixupimm<mode>_maskz<round_saeonly_expand_name>): Update.
              (avx512f_sfixupimm<mode><sd_maskz_name><round_saeonly_name>): Update.
              (avx512f_sfixupimm<mode>_mask<round_saeonly_name>): Remove.
      
      From-SVN: r266026
      Wei Xiao committed
    • re PR c/69502 (attribute aligned reduces alignment contrary to documentation) · 8f64958b
      2018-11-11  Sandra Loosemore  <sandra@codesourcery.com>
      
      	PR c/69502
      
      	gcc/
      	* doc/extend.texi (Common Type Attributes): For the align type
      	attribute, copy language about decreasing alignment from the
      	corresponding variable attribute.
      
      From-SVN: r266025
      Sandra Loosemore committed
    • csky.md (*fpuv2_nmulsf3_1, [...]): Handle -frounding-math. · 31fad58f
      2018-11-11  Xianmiao Qu  <xianmiao_qu@c-sky.com>
      
      	gcc/
      	* config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle
      	-frounding-math.
      
      	gcc/testsuite
      	* gcc.target/csky/fnmul-1.c: New.
      	* gcc.target/csky/fnmul-2.c: New.
      	* gcc.target/csky/fnmul-3.c: New.
      	* gcc.target/csky/fnmul-4.c: New.
      
      From-SVN: r266024
      Xianmiao Qu committed
    • Daily bump. · 9510b563
      From-SVN: r266023
      GCC Administrator committed
  3. 11 Nov, 2018 7 commits