1. 14 Feb, 2019 7 commits
  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 13 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
    • i386: Revert revision 268678 and revision 268657 · 705c92a2
      i386 backend has
      
      INT_MODE (OI, 32);
      INT_MODE (XI, 64);
      
      So, XI_MODE represents 64 INTEGER bytes = 64 * 8 = 512 bit operation,
      in case of const_1, all 512 bits set.
      
      We can load zeros with narrower instruction, (e.g. 256 bit by inherent
      zeroing of highpart in case of 128 bit xor), so TImode in this case.
      
      Some targets prefer V4SF mode, so they will emit float xorps for zeroing
      
      Then the introduction of AVX512F fubared everything by overloading the
      meaning of insn mode.
      
      How should we use INSN mode,  MODE_XI, in standard_sse_constant_opcode
      and patterns which use standard_sse_constant_opcode? 2 options:
      
      1.  MODE_XI should only used to check if EXT_REX_SSE_REG_P is true
      in any register operand.  The operand size must be determined by operand
      itself , not by MODE_XI.  The operand encoding size should be determined
      by the operand size, EXT_REX_SSE_REG_P and AVX512VL.
      2. MODE_XI should be used to determine the operand encoding size.
      EXT_REX_SSE_REG_P and AVX512VL should be checked for encoding
      instructions.
      
      gcc/
      
      	PR target/89229
      	* config/i386/i386.md (*movoi_internal_avx): Revert revision
      	268678 and revision 268657.
      	(*movti_internal): Likewise.
      
      gcc/testsuite/
      
      	PR target/89229
      	* gcc.target/i386/pr89229-1.c: New test.
      
      From-SVN: r268811
      H.J. Lu committed
    • libphobos: Merge upstream phobos 791c5d240 · ec696cae
      Adds missing HPPA support in std.experimental.allocator.
      
      Reviewed-on: https://github.com/dlang/phobos/pull/6838
      
      From-SVN: r268810
      Iain Buclaw committed
    • S/390: Reject invalid Q/R/S/T addresses after LRA · dd0df136
      The following insn:
      
      (insn (set (reg:DI %r2)
                 (sign_extend:DI (mem:SI
                  (const:DI (plus:DI (symbol_ref:DI ("*.LC0"))
                                     (const_int 16)))))))
      
      is correctly recognized by LRA as RIL alternative of extendsidi2
      define_insn.  However, when recognition runs after LRA, it returns RXY
      alternative, which is incorrect, since the offset 16 points past the
      end of of *.LC0 literal pool entry.  Such addresses are normally
      rejected by s390_decompose_address ().
      
      This inconsistency confuses annotate_constant_pool_refs: the selected
      alternative makes it proceed with annotation, only to find that the
      annotated address is invalid, causing ICE.
      
      This patch fixes the root cause, namely, that s390_check_qrst_address ()
      behaves differently during and after LRA.
      
      gcc/ChangeLog:
      
      2019-02-12  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/89233
      	* config/s390/s390.c (s390_decompose_address): Update comment.
      	(s390_check_qrst_address): Reject invalid address forms after
      	LRA.
      
      gcc/testsuite/ChangeLog:
      
      2019-02-12  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/89233
      	* gcc.target/s390/pr89233.c: New test.
      
      From-SVN: r268798
      Ilya Leoshkevich committed
    • vec-sld-modulo.c: Require p8vector_hw. · 8ced0660
      2018-01-12  Bill Schmidt  <wschmidt@linux.ibm.com>
      
      	* gcc.target/powerpc/vec-sld-modulo.c: Require p8vector_hw.
      	* gcc.target/powerpc/vec-srad-modulo.c: Likewise.
      	* gcc.target/powerpc/vec-srd-modulo.c: Likewise.
      
      From-SVN: r268797
      Bill Schmidt committed
    • [libbacktrace] Handle bsearch with NULL base in dwarf_lookup_pc · 68641fb7
      The call to bsearch in dwarf_lookup_pc can have NULL as base argument when
      the nmemb argument is 0.  The base argument is required to be pointing to the
      initial member of an array of nmemb objects.  It is not specified what
      constitutes a valid pointer to an array of 0 objects, but glibc declares base
      with attribute non-null, so the NULL will trigger a sanitizer runtime error.
      
      Fix this by only calling bsearch if nmemb != 0.
      
      2019-02-12  Tom de Vries  <tdevries@suse.de>
      
      	PR libbacktrace/81983
      	* dwarf.c (dwarf_lookup_pc): Don't call bsearch if nmemb == 0.
      
      From-SVN: r268796
      Tom de Vries committed
    • Revert a hunk from r261322 (PR lto/88876). · b3f2b048
      2019-02-12  Martin Liska  <mliska@suse.cz>
      
      	PR lto/88876
      	* ipa-pure-const.c (propagate_pure_const): Revert hunk as
      	we need default values of funct_state for a function that
      	is not optimized.
      
      From-SVN: r268795
      Martin Liska committed
    • Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp · f9f75f8d
      When a node is removed from a splay tree, the splay tree was
      not using the function splay_tree_delete_key_fn to release the key.
      This was causing a leak, fixed by Tom Tromey.
      
      This patch fixes another key leak, that happens when a key equal to
      a key already present is inserted.  In such a case, we have to release
      the old KEY.
      Note that this is based on the assumption that the caller always
      allocates a new KEY when doing an insert.
      
      Also, clarify the documentation about when the release functions are
      called.
      
      2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
      
      	* splay-tree.h (splay_tree_delete_key_fn): Update comment.
      	(splay_tree_delete_value_fn): Likewise.
      
      libiberty/ChangeLog
      2019-02-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
      
      	* splay-tree.c (splay_tree_insert): Also release old KEY in case
      	of insertion of a key equal to an already present key.
      	(splay_tree_new_typed_alloc): Update comment.
      
      From-SVN: r268793
      Philippe Waroquiers committed
    • asan.c (asan_expand_mark_ifn): Take into account the alignment of the object to… · c4d57632
      asan.c (asan_expand_mark_ifn): Take into account the alignment of the object to pick the size of stores on...
      
      	* asan.c (asan_expand_mark_ifn): Take into account the alignment of
      	the object to pick the size of stores on strict-alignment platforms.
      
      	* config/sparc/sparc.md (*movsi_insn): Minor tweak.
      	(*movdi_insn_sp32): Likewise.
      	(*movdi_insn_sp64): Likewise.
      
      From-SVN: r268792
      Eric Botcazou committed
    • re PR target/88777 (Out-of-range offsets building glibc test-tgmath2.c for hppa-linux-gnu) · baaf860b
      
      	PR lto/88777
      	* cgraphunit.c (analyze_functions): Clear READONLY flag for external
      	types that needs constructiong.
      	* tree.h (may_be_aliased): Do not check TYPE_NEEDS_CONSTRUCTING.
      
      From-SVN: r268791
      Jan Hubicka committed
    • re PR tree-optimization/89253 (ICE in split_loop, at tree-ssa-loop-split.c:566) · 0dcbc6dd
      2019-02-12  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/89253
      	* tree-ssa-loop-split.c (tree_ssa_split_loops): Check we can
      	duplicate the loop.
      
      	* gfortran.dg/pr89253.f: New testcase.
      
      From-SVN: r268790
      Richard Biener committed