1. 14 Feb, 2019 17 commits
    • Arm: Add HF modes to ANY iterators · 2a26aed6
      The iterator ANY64 are used in various general split patterns and is supposed
      to contain all 64 bit modes.
      
      For some reason the pattern has HI but not HF.  This adds HF so that general
      64 bit splits are generated for these modes as well.  These are required
      by various split patterns that expect them to be there.
      
      gcc/ChangeLog:
      
      	PR target/88850
      	* config/arm/iterators.md (ANY64): Add V4HF.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/88850
      	* gcc.target/arm/pr88850-2.c: New test.
      	* lib/target-supports.exp
      	(check_effective_target_arm_neon_softfp_fp16_ok_nocache,
      	check_effective_target_arm_neon_softfp_fp16_ok,
      	add_options_for_arm_neon_softfp_fp16): New.
      
      From-SVN: r268884
      Tamar Christina committed
    • Update libstdc++ documentation for implementation status · bb2a18a3
      	* doc/xml/manual/status_cxx2017.xml: Add P0063R3 to status table.
      	* doc/html/*: Regenerate.
      
      From-SVN: r268883
      Jonathan Wakely committed
    • DR 2586 fix value category in uses-allocator checks · b7dbc672
      Because uses-allocator construction is invariably done with a const
      lvalue the __uses_alloc helper should use a const lvalue for the
      is_constructible checks. Otherwise, it can detect that the type can be
      constructed from an rvalue, and then an error happens when a const
      lvalue is passed to the constructor instead.
      
      Prior to LWG DR 2586 scoped_allocator_adaptor incorrectly used an rvalue
      type in the is_constructible check and then used a non-const lvalue for
      the actual construction. The other components using uses-allocator
      construction (tuple and polymorphic_allocator) have always done so with
      a const lvalue allocator, although the use of __use_alloc in our
      implementation meant they behaved the same as scoped_allocator_adaptor
      and incorrectly used rvalues for the is_constructible checks.
      
      In C++20 the P0591R4 changes mean that all uses-allocator construction
      is defined in terms of the new uses_allocator_construction_args
      functions, which always use a const lvalue allocator.
      
      The changes in this patch ensure that the __use_alloc helper correctly
      matches the requirements in the standard, consistently using a const
      lvalue allocator for the is_constructible checks and the actual
      constructor arguments.
      
      	* doc/xml/manual/intro.xml: Document LWG 2586 status.
      	* include/bits/uses_allocator.h (__uses_alloc): Use const lvalue
      	allocator type in is_constructible checks.
      	* testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error.
      	* testsuite/20_util/scoped_allocator/dr2586.cc: New test.
      	* testsuite/20_util/tuple/cons/allocators.cc: Add test using
      	problematic type from LWG 2586 discussion.
      	* testsuite/20_util/uses_allocator/69293_neg.cc: Adjust dg-error.
      	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
      
      From-SVN: r268882
      Jonathan Wakely committed
    • When this testcase was introduced it failed to account for the possibility of... · 6461bdc4
      When this testcase was introduced it failed to account for the possibility of
      targets that do not support arm mode or that do not support the ldrd/strd
      instructions.
      
      This patch accounts for both of these by adding some
      dg-require-effective-target lines to the testcase.
      
      This patch also adds a new effective-target procedure to check a target
      supports ldrd/strd.
      
      This patch also adds a new effective-target procedure to check a target
      supports arm ldrd/strd.
      The check uses the 'r' constraint to ensure SP is not used so that it will work
      for thumb mode code generation as well as arm mode.
      
      Tested by running this testcase with cross compilers using "-march=armv5t",
      "-mcpu=cortex-m3", "-mcpu-arm7tdmi", "-mcpu=cortex-a9 -march=armv5t" for both
      arm-none-eabi and arm-none-linux-gnueabihf.
      Also ran this testcase with `make check` natively.
      
      gcc/testsuite/ChangeLog:
      
      2019-02-14  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* gcc.dg/rtl/arm/ldrd-peepholes.c: Restrict testcase.
      	* lib/target-supports.exp: Add procedure to check for ldrd.
      
      From-SVN: r268881
      Matthew Malcomson committed
    • re PR lto/88677 (Divergence in -O2 and -O2 -flto early opts) · ae2341c9
      	PR lto/88677
      Fix PR number.
      
      From-SVN: r268880
      Jan Hubicka committed
    • Add std::timespec and std::timespec_get for C++17 · a61ae535
      	* configure.ac: Check for C11 timespec_get function.
      	* crossconfig.m4 (freebsd, linux, gnu, cygwin, solaris, netbsd)
      	(openbsd): Likewise
      	* config.h.in: Regenerate.
      	* configure: Regenerate.
      	* include/c_global/ctime (timespec, timespec_get): Add to namespace
      	std for C++17 and up.
      
      From-SVN: r268879
      Jonathan Wakely committed
    • LWG 2537 fix priority_queue constructors to establish invariant · 1f4dcbf7
      This change is safe to make now (in stage 4), because the constructors
      are currently incorrect and unusable (unless the supplied container
      already contains a heap, in which case the new make_heap calls are
      redundant but harmless).
      
      	* doc/xml/manual/intro.xml: Document LWG 2537 status.
      	* include/bits/stl_queue.h
      	(priority_queue(const Compare&, const Container&, const Alloc&))
      	(priority_queue(const Compare&, Container&&, const Alloc&)): Call
      	make_heap.
      	* testsuite/23_containers/priority_queue/dr2537.cc: New test.
      
      From-SVN: r268878
      Jonathan Wakely committed
    • Enforce LWG DR 2566 requirement for container adaptors · 1138a19d
      Although there is no good use for stack<int, deque<double>> or similar
      types with a mismatched value_type, it's possible somebody is doing that
      and getting away with it currently. This patch only enforces the new
      requirement for C++17 and later. During stage 1 we should consider
      enforcing it for C++11 and C++14.
      
      	* doc/xml/manual/intro.xml: Document LWG 2566 status.
      	* include/bits/stl_queue.h (queue, priority_queue): Add static
      	assertions to enforce LWG 2566 requirement on value_type.
      	* include/bits/stl_stack.h (stack): Likewise.
      
      From-SVN: r268877
      Jonathan Wakely committed
    • Fix PR72715 "ICE in gfc_trans_omp_do, at fortran/trans-openmp.c:3164" · affd7d47
      The OpenACC 'resolve_oacc_nested_loops' function duplicates most code of the
      OpenMP 'resolve_omp_do', but didn't include the PR60127 "ICE with OpenMP and DO
      CONCURRENT" (trunk r210331) changes.  (Probably the two functions should be
      unified?)
      
      The Fortran DO CONCURRENT construct is a way to tell the compiler that loop
      iterations don't have any interdependencies -- which is information that would
      very well be suitable for OpenACC/OpenMP loops.  There are some "details"
      however, see the discussion/references in PR60127, so for the time being, make
      this a compile-time error instead of an ICE.
      
      	gcc/fortran/
      	* openmp.c (resolve_oacc_nested_loops): Error on do concurrent
      	loops.
      
      	gcc/testsuite/
      	* gfortran.dg/goacc/loop-3-2.f95: Error on do concurrent loops.
      	* gfortran.dg/goacc/loop-3.f95: Likewise.
      	* gfortran.dg/goacc/pr72715.f90: New test.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      From-SVN: r268875
      Cesar Philippidis committed
    • Call free_dominance_info when transformed in DCE (PR rtl-optimization/89242). · 696c5b27
      2019-02-14  Martin Liska  <mliska@suse.cz>
      
      	PR rtl-optimization/89242
      	* dce.c (delete_unmarked_insns): Call free_dominance_info we
      	process a transformation.
      2019-02-14  Martin Liska  <mliska@suse.cz>
      
      	PR rtl-optimization/89242
      	* g++.dg/pr89242.C: New test.
      
      From-SVN: r268873
      Martin Liska committed
    • PR middle-end/89303 add testcase for std::enable_shared_from_this · 133342f0
      	* testsuite/20_util/enable_shared_from_this/89303.cc: New test.
      
      From-SVN: r268869
      Jonathan Wakely committed
    • re PR tree-optimization/89314 (ICE in wide_int_to_tree_1, at tree.c:1561) · 3c545f74
      	PR tree-optimization/89314
      	* fold-const.c (fold_binary_loc): Cast strlen argument to
      	const char * before dereferencing it.  Formatting fixes.
      
      	* gcc.dg/pr89314.c: New test.
      
      From-SVN: r268868
      Jakub Jelinek committed
    • Document LWG 2735 status and add test · 8936f531
      This DR was already resolved for GCC 7.1 by the implementation of DR
      2192, but we didn't have an explicit test for the behaviour that 2735
      guarantees.
      
      	* doc/xml/manual/intro.xml: Document LWG 2735 status.
      	* include/bits/std_abs.h: Add comment about LWG 2735.
      	* testsuite/26_numerics/headers/cstdlib/dr2735.cc: New test.
      
      From-SVN: r268867
      Jonathan Wakely committed
    • re PR middle-end/89284 (gcc -fsanitize=undefined inhibits -Wuninitialized) · 31de5e4d
      	PR middle-end/89284
      	* passes.def: Swap pass_ubsan and pass_early_warn_uninitialized.
      
      	* gcc.dg/ubsan/pr89284.c: New test.
      
      From-SVN: r268862
      Jakub Jelinek committed
    • go-gcc.cc: #include "opts.h". · 0ce1c30b
      	* go-gcc.cc: #include "opts.h".
      	(Gcc_backend::function): Compile thunks with -Os.
      
      From-SVN: r268861
      Ian Lance Taylor committed
    • optc-save-gen.awk: Set var_opt_hash for initial optimizations and set current index for other... · 471f9e24
      gcc/:
      	* optc-save-gen.awk: Set var_opt_hash for initial optimizations
      	and set current index for other optimizations.
      gcc/testsuite/:
      	* gcc.dg/func-attr-1.c: New test.
      
      From-SVN: r268860
      Ian Lance Taylor committed
    • Daily bump. · b6f4a787
      From-SVN: r268859
      GCC Administrator committed
  2. 13 Feb, 2019 20 commits
    • PR libstdc++/89345 Only define std::destroying_delete for C++2a · 329c0f89
      Clang defines the __cpp_impl_destroying_delete macro unconditionally, so
      that the feature is supported whenever the library type is defined. This
      is incompatible with the current definition in libstdc++ because we use
      constexpr and inline variables, which will give an error for older -std
      modes.
      
      This patch defines the destroying_delete_t type and destroying_delete
      variable independently of the __cpp_impl_destroying_delete macro, but
      only for C++2a (because the names aren't reserved for previous
      standards). The __cpp_lib_destroying_delete macro is only defined when
      both the library type and compiler macro are defined (i.e. when the type
      can actually be used as intended).
      
      	PR libstdc++/89345
      	* include/std/version [__cpp_impl_destroying_delete]
      	(__cpp_lib_destroying_delete): Only define for C++2a and later.
      	* libsupc++/new [__cpp_impl_destroying_delete]
      	(__cpp_lib_destroying_delete): Likewise.
      	(destroying_delete_t, destroying_delete): Likewise, but define even
      	when __cpp_impl_destroying_delete is not defined.
      	* testsuite/18_support/destroying_delete.cc: New test.
      
      From-SVN: r268856
      Jonathan Wakely committed
    • sse.md (vec_set<VI4F_256_512:mode>_0): Use nonimmediate_operand as operand 2 predicate. · 4d259d3b
      	* config/i386/sse.md (vec_set<VI4F_256_512:mode>_0): Use
      	nonimmediate_operand as operand 2 predicate.
      	(vec_set<VF2_512_256:mode>_0): Ditto.
      	(vec_set<VI8_AVX_AVX512F:mode>_0): Ditto.
      	(*vec_concatv2si): Remove alternative 2.
      	(*vec_concatv4si_0): Use vm constraint for alternative 0.
      	(*vec_concatv4si_0): Remove preferred_for_speed attribute.
      	(vec_concatv2di): Split alternatives 4,5,6 to ...
      	(*vec_concatv2di_0) ... new pattern.
      
      testsuite/ChangeLog:
      
      	* gcc.target/i386/sse2-init-v2di-2.c (dg-final): Update scan string.
      
      From-SVN: r268855
      Uros Bizjak committed
    • PR c++/89297 - ICE with OVERLOAD in template. · f83fad40
      	* semantics.c (finish_compound_literal): Call
      	instantiate_non_dependent_expr_sfinae.
      
      	* g++.dg/cpp0x/initlist113.C: New test.
      
      From-SVN: r268854
      Marek Polacek committed
    • [PR86379] do not use TREE_TYPE for USING_DECL_SCOPE · 10839133
      It's too risky to reuse the type field for USING_DECL_SCOPE.
      Language-independent parts of the compiler, such as location and
      non-lvalue wrappers, happily take the TREE_TYPE of a USING_DECL as if
      it was a type rather than an unrelated scope.
      
      For better or worse, USING_DECLs use the non-common struct so we can
      use the otherwise unused result field.  Adjust fallout, from uses of
      TREE_TYPE that were supposed to be USING_DECL_SCOPE, to other
      accidental uses of TREE_TYPE of a USING_DECL.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/86379
      	* cp-tree.h (USING_DECL_SCOPE): Use result rather than type.
      	* name-lookup.c (strip_using_decl): Use USING_DECL_SCOPE.
      	* search.c (protected_accessible_p): Follow USING_DECL_DECLS.
      	(shared_member_p): Likewise.
      	(lookup_member): Likewise.
      	* decl.c (grok_special_member_properties): Skip USING_DECLs.
      	* semantics.c (finish_omp_declare_simd_methods): Likewise.
      	(finish_qualified_id_expr): Do not call shared_member_p with
      	a dependent expr.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/86379
      	* g++.dg/cpp0x/pr86379.C: New.
      
      From-SVN: r268851
      Alexandre Oliva committed
    • [PR87322] move cp_evaluated up to tsubst all lambda parms · 60378a96
      A lambda capture variable initialized with a lambda expr taking more
      than one parameter got us confused.
      
      The first problem was that the parameter list was cut short during
      tsubsting because we tsubsted it with cp_unevaluated_operand.  We
      reset it right after, to tsubst the function body, so I've moved the
      reset up so that it's in effect while processing the parameters as
      well.
      
      The second problem was that the lambda expr appeared twice, once in a
      decltype that gave the capture variable its type, and once in its
      initializer.  This caused us to instantiate two separate lambda exprs
      and closure types, and then to flag that the lambda expr in the
      initializer could not be converted to the unrelated closure type
      determined for the capture variable.  Recording the tsubsted expr in
      the local specialization map, and retrieving it for reuse fixed it.
      However, that required some care to avoid reusing the lambda expr
      across different indices in pack expansions.
      
      
      for  gcc/cp/ChangeLog
      
      	PR c++/87322
      	* pt.c (tsubst_lambda_expr): Avoid duplicate tsubsting.
      	Move cp_evaluated resetting before signature tsubsting.
      	(gen_elem_of_pack_expansion_instantiation): Separate local
      	specializations per index.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/87322
      	* g++.dg/cpp1y/pr87322.C: New.
      	* g++.dg/cpp0x/lambda/lambda-variadic5.C: Test that we
      	instantiate the expected number of lambda functions.
      
      From-SVN: r268850
      Alexandre Oliva committed
    • re PR c++/77304 (ICE on C++ code with invalid template parameter: in… · 2db698ce
      re PR c++/77304 (ICE on C++ code with invalid template parameter: in gimplify_expr, at gimplify.c:11260)
      
      	PR c++/77304
      	* g++.dg/cpp2a/nontype-class13.C: New test.
      
      From-SVN: r268849
      Marek Polacek committed
    • [ARM] Fix Thumb-1 ldm (PR89190) · 125b98b1
      This patch fixes an ICE in the Thumb-1 LDM peepholer.  Thumb-1 LDMs
      always update the base register except if the base is loaded.
      The current implementation rejects LDMs where the base is not dead,
      however this doesn't exclude the case where the base is loaded as
      well as dead.  Fix this by explicitly checking whether the base is
      loaded.  Also enable LDMs which load the first register.
      
          gcc/
      	PR target/89190
      	* config/arm/arm.c (ldm_stm_operation_p) Set
      	addr_reg_in_reglist correctly for first register.
      	(load_multiple_sequence): Remove dead base check.
      	(gen_ldm_seq): Correctly set write_back for Thumb-1.
      
          testsuite/
      	PR target/89190
      	* gcc.target/arm/pr89190.c: New test.
      
      From-SVN: r268848
      Wilco Dijkstra committed
    • C++ concepts: fix ICE with requires on dtors (PR c++/89036) · 6174de7c
      PR c++/89036 reports an ICE due to this assertion failing
      
      1136	  /* A class should never have more than one destructor.  */
      1137	  gcc_assert (!current_fns || via_using || !DECL_DESTRUCTOR_P (method));
      
      on this template with a pair of dtors, with
      mutually exclusive "requires" clauses:
      
      template<typename T>
      struct Y {
          ~Y() requires(true) = default;
          ~Y() requires(false) {}
      };
      
      Nathan introduced this assertion as part of:
      
        ca9219bf18c68a001d62ecb981bc9176b0feaf12 (aka r251340):
          2017-08-24  Nathan Sidwell  <nathan@acm.org>
             Conversion operators kept on single overload set
      
      which, amongst other changes to add_method had this:
           /* A class should never have more than one destructor.  */
        -  if (current_fns && DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (method))
        -    return false;
        +  gcc_assert (!current_fns || !DECL_DESTRUCTOR_P (method));
      
      The following patch drops the assertion (I already had to generalize
      the assertion in r268041 to fix PR c++/88699).
      
      gcc/cp/ChangeLog:
      	PR c++/89036
      	* class.c (add_method): Drop destructor assertion.
      
      gcc/testsuite/ChangeLog:
      	PR c++/89036
      	* g++.dg/concepts/pr89036.C: New test.
      
      From-SVN: r268847
      David Malcolm committed
    • AArch64: Allow any offset for SVE addressing modes before reload. · 0c63a8ee
      On AArch64 aarch64_classify_address has a case for when it's non-strict
      that will allow it to accept any byte offset from a reg when validating
      an address in a given addressing mode.
      
      This because reload would later make the address valid. SVE however requires
      the address always be valid, but currently allows any address when a MEM +
      offset is used.  This causes an ICE as nothing later forces the address to be
      legitimate.
      
      The patch forces aarch64_emit_sve_pred_move via expand_insn to ensure that
      the addressing mode is valid for any loads/stores it creates, which follows
      the SVE way of handling address classifications.
      
      gcc/ChangeLog:
      
      	PR target/88847
      	* config/aarch64/aarch64-sve.md (*pred_mov<mode>, pred_mov<mode>):
      	Expose as @aarch64_pred_mov.
      	* config/aarch64/aarch64.c (aarch64_classify_address):
      	Use expand_insn which legitimizes operands.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/88847
      	* gcc.target/aarch64/sve/pr88847.c: New test.
      
      From-SVN: r268845
      Tamar Christina committed
    • Clean up MPX-related stuff. · dbcdd561
      2019-02-13  Martin Liska  <mliska@suse.cz>
      
      	* builtins.h (expand_builtin_with_bounds): Remove declaration.
      	* calls.c (struct arg_data): Remove special_slot, pointer_arg
      	and pointer_offset fields.
      	(initialize_argument_information): Remove usage of dead
      	fields.
      	* cgraph.h (struct cgraph_thunk_info): Remove
      	add_pointer_bounds_args.
      	* cgraphunit.c (cgraph_node::expand_thunk): Remove usage of dead
      	fields.
      	(cgraph_node::assemble_thunks_and_aliases): Remove usage of dead
      	fields.
      	* config/i386/i386.c (ix86_function_arg_advance): Remove
      	unrelated comment.
      	(struct builtin_isa): Remove leaf_p and nothrow_p fields.
      	(def_builtin):  Remove usage of dead
      	fields.
      	(ix86_add_new_builtins): Likewise.
      	* ipa-fnsummary.c (compute_fn_summary): Likewise.
      	* ipa-icf.c (sem_function::equals_wpa): Likewise.
      	(sem_function::init): Likewise.
      	(sem_variable::merge): Likewise.
      	* ipa-visibility.c (function_and_variable_visibility): Likewise.
      	* ipa.c (symbol_table::remove_unreachable_nodes): Likewise.
      	* lto-cgraph.c (lto_output_node): Likewise.
      	(lto_output_varpool_node): Likewise.
      	(input_node): Likewise.
      	(input_varpool_node): Likewise.
      	* lto-streamer-out.c (lto_output): Likewise.
      	* tree-inline.c (expand_call_inline): Remove usage of
      	assign_stmts.
      	* tree-inline.h (struct copy_body_data): Likewise.
      	* varpool.c (varpool_node::dump): Likewise.
      
      From-SVN: r268844
      Martin Liska committed
    • [multiple changes] · f17130a6
      2019-02-13  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/89303
      	* tree-ssa-structalias.c (set_uids_in_ptset): Or in vi->is_heap_var
      	into pt->vars_contains_escaped_heap instead of setting
      	pt->vars_contains_escaped_heap to it.
      
      2019-02-13  Jonathan Wakely  <jwakely@redhat.com>
      	    Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/89303
      	* g++.dg/torture/pr89303.C: New test.
      
      From-SVN: r268843
      Jakub Jelinek committed
    • Fix -fdec simplification (PR fortran/88649). · 53fcf729
      2019-02-13  Martin Liska  <mliska@suse.cz>
      
      	PR fortran/88649
      	* resolve.c (resolve_operator): Initialize 't' right
      	after function entry.  Skip switch (e->value.op.op)
      	for -fdec operands that become function calls.
      
      From-SVN: r268842
      Martin Liska committed
    • re PR middle-end/89281 (gcc/optabs.c:3901:30: runtime error: shift exponent 32… · 548538ce
      re PR middle-end/89281 (gcc/optabs.c:3901:30: runtime error: shift exponent 32 is too large for 32-bit type 'int')
      
      	PR middle-end/89281
      	* optabs.c (prepare_cmp_insn): Use UINTVAL (size) instead of
      	INTVAL (size), compare it to GET_MODE_MASK instead of
      	1 << GET_MODE_BITSIZE.
      
      From-SVN: r268841
      Jakub Jelinek committed
    • re PR c++/88986 (ICE: tree check: expected tree that contains 'decl minimal'… · eeebb022
      re PR c++/88986 (ICE: tree check: expected tree that contains 'decl minimal' structure, have 'error_mark' in member_vec_binary_search, at cp/name-lookup.c:1136)
      
      /cp
      2019-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/88986
      	* decl.c (make_typename_type): Allow for TYPE_PACK_EXPANSION as
      	context (the first argument).
      	* pt.c (tsubst, case TYPENAME_TYPE): Handle TYPE_PACK_EXPANSION
      	as context.
      
      /testsuite
      2019-02-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/88986
      	* g++.dg/cpp1z/using4.C: New.
      	* g++.dg/cpp1z/using5.C: Likewise.
      	* g++.dg/cpp1z/using6.C: Likewise.
      
      From-SVN: r268839
      Paolo Carlini committed
    • re PR target/89290 (ICE in change_address_1, at emit-rtl.c:2286) · 3e7f831c
      	PR target/89290
      	* config/i386/predicates.md (x86_64_immediate_operand): Allow
      	TLS UNSPECs offsetted by signed 32-bit CONST_INT even with
      	-mcmodel=large.
      
      	* gcc.target/i386/pr89290.c: New test.
      
      From-SVN: r268837
      Jakub Jelinek committed
    • libphobos: Fallback on UnwindBacktrace if LibBacktrace not defined. · 5522686e
      In the gcc.backtrace module, either one of LibBacktrace or
      UnwindBacktrace will always be defined.  Giving UnwindBacktrace a higher
      precedence over the libc backtrace as the default handler because the
      latter depends on a rt.backtrace module that is not compiled in.
      
      libphobos/ChangeLog:
      
      	* libdruntime/core/runtime.d (defaultTraceHandler): Give
      	UnwindBacktrace handler precedence over backtrace.
      
      From-SVN: r268836
      Iain Buclaw committed
    • Remove a barrier when EDGE_CROSSING is removed (PR lto/88858). · 91c50487
      2019-02-13  Martin Liska  <mliska@suse.cz>
      
      	PR lto/88858
      	* cfgrtl.c (remove_barriers_from_footer): New function.
      	(try_redirect_by_replacing_jump): Use it.
      	(cfg_layout_redirect_edge_and_branch): Likewise.
      
      From-SVN: r268835
      Martin Liska committed
    • rs6000: Add support for the vec_sbox_be, vec_cipher_be etc. builtins. · d60a02c8
      The 5 new builtins vec_sbox_be, vec_cipher_be, vec_cipherlast_be, vec_ncipher_be
      and vec_ncipherlast_be only support vector unsigned char type parameters.
      Add new instruction crypto_vsbox_<mode> and crypto_<CR_insn>_<mode> to handle
      them accordingly, where the new mode CR_vqdi can be expanded to vector unsigned
      long long for none _be postfix builtins or vector unsigned char for _be postfix
      builtins.
      
      gcc/ChangeLog
      
      2019-02-13  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>
      
      	* config/rs6000/altivec.h (vec_sbox_be, vec_cipher_be,
      	vec_cipherlast_be, vec_ncipher_be, vec_ncipherlast_be): New #defines.
      	* config/rs6000/crypto.md (CR_vqdi): New define_mode_iterator.
      	(crypto_vsbox_<mode>, crypto_<CR_insn>_<mode>): New define_insns.
      	* config/rs6000/rs6000-builtin.def (VSBOX_BE): New BU_CRYPTO_1.
      	(VCIPHER_BE, VCIPHERLAST_BE, VNCIPHER_BE, VNCIPHERLAST_BE):
      	New BU_CRYPTO_2.
      	* config/rs6000/rs6000.c (builtin_function_type)
      	<CRYPTO_BUILTIN_VSBOX_BE, CRYPTO_BUILTIN_VCIPHER_BE,
      	CRYPTO_BUILTIN_VCIPHERLAST_BE, CRYPTO_BUILTIN_VNCIPHER_BE,
      	CRYPTO_BUILTIN_VNCIPHERLAST_BE>: New switch options.
      	* doc/extend.texi (vec_sbox_be, vec_cipher_be, vec_cipherlast_be,
      	vec_ncipher_be, vec_ncipherlast_be): New builtin functions.
      
      gcc/testsuite/ChangeLog
      
      2019-02-13  Xiong Hu Luo  <luoxhu@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/crypto-builtin-1.c
      	(crypto1_be, crypto2_be, crypto3_be, crypto4_be, crypto5_be):
      	New testcases.
      
      From-SVN: r268834
      Xiong Hu Luo committed
    • Daily bump. · ce22f324
      From-SVN: r268833
      GCC Administrator committed
    • re PR go/89193 ("make distclean" leaves stuff in gotools/) · 7ca1909c
      	PR go/89193
      	* Makefile.am (mostlyclean-local): Avoid getting an error from
      	chmod.  Remove check-vet-dir and gocache-test.
      	* Makefile.in: Regenerate.
      
      From-SVN: r268830
      Ian Lance Taylor committed
  3. 12 Feb, 2019 3 commits
    • invoke.texi (RS/6000 and PowerPC Options): Remove duplicate -maltivec. · ced20a50
      	* doc/invoke.texi (RS/6000 and PowerPC Options): Remove duplicate
      	-maltivec. Delete -maltivec=be and -maltivec=le documentation.
      
      From-SVN: r268829
      Pat Haugen committed
    • syscall: don't assume that WIFCONTINUED is defined · 2faf2a30
          
          It's not defined on the Hurd.
          
          Reviewed-on: https://go-review.googlesource.com/c/161963
      
      From-SVN: r268828
      Ian Lance Taylor committed
    • PR c++/89144 - link error with constexpr initializer_list. · d950b005
      In this PR, we were unnecessarily rejecting a constexpr initializer_list
      with no elements.  This seems like a fairly useless degenerate case, but it
      makes sense to avoid allocating an underlying array at all if there are no
      elements and instead use a null pointer, like the initializer_list default
      constructor.
      
      If the (automatic storage duration) list does have initializer elements, we
      continue to reject the declaration, because the initializer_list ends up
      referring to an automatic storage duration temporary array, which is not a
      suitable constant initializer.  If we make it static, it should be OK
      because we refer to a static array.  The second hunk fixes that case.  It
      also means we won't diagnose some real errors in templates, but those
      diagnostics aren't required, and we'll get them when the template is
      instantiated.
      
      	* call.c (convert_like_real) [ck_list]: Don't allocate a temporary
      	array for an empty list.
      	* typeck2.c (store_init_value): Don't use cxx_constant_init in a
      	template.
      
      From-SVN: r268827
      Jason Merrill committed