1. 05 Jan, 2017 17 commits
    • S/390: Unroll mvc loop for memcpy with small constant lengths. · f5a537e3
      See the memset unrolling patch.  The very same applies to memcpys with
      constant lengths.
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_movmem): Unroll MVC loop for
      	small constant length operands.
      
      gcc/testsuite/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/memcpy-1.c: New test.
      
      From-SVN: r244098
      Andreas Krebbel committed
    • S/390: Unroll mvc/xc loop for memset with small constant · 8597cd33
       lengths.
      
      When expanding a memset we emit a loop of MVCs/XCs instructions dealing
      with 256 byte blocks.  This loop used to get unrolled with older GCCs
      when using constant length operands.  GCC lost this ability probably
      when more of the loop unrolling stuff has been moved to tree level.
      
      With this patch the unrolling is done manually when emitting the RTL
      insns.
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* gcc.target/s390/memset-1.c: New test.
      
      gcc/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_setmem): Unroll the loop for
      	small constant length operands.
      
      From-SVN: r244097
      Andreas Krebbel committed
    • S/390: memset: Avoid overlapping MVC operands between iterations. · 587790e6
      A memset with a value != 0 is currently implemented using the mvc
      instruction propagating the first byte through 256 byte blocks.  While
      for the first mvc the byte is written with a separate instruction
      subsequent MVCs used the last byte of the previous 256 byte block.
      
      Starting with z13 this causes a major performance degradation.  With
      this patch we always set the first byte with an mvi or stc in order to
      avoid the overlapping of the MVC operands between loop iterations.
      
      On older machines this basically makes no measurable difference so the
      patch enables the new behavior for all machine levels in order to make
      sure that code built for older machine levels runs well when moved to
      a z13.
      
      Bootstrapped and regression tested on s390 and s390x using z900 and z13
      as default -march level. No regressions.
      
      gcc/ChangeLog:
      
      2017-01-05  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
      
      	* config/s390/s390.c (s390_expand_setmem): Avoid overlapping bytes
      	between loop iterations.
      
      From-SVN: r244096
      Andreas Krebbel committed
    • Do not sanitize in an abnormal context (PR sanitizer/78815). · 6ff92497
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	PR sanitizer/78815
      	* gimplify.c (gimplify_decl_expr): Compare to
      	asan_poisoned_variables instread of checking flags.
      	(gimplify_target_expr): Likewise.
      	(gimplify_expr): Likewise.
      	(gimplify_function_tree): Conditionally initialize
      	asan_poisoned_variables.
      
      From-SVN: r244095
      Martin Liska committed
    • vimrc: fix TAB settings · 6438c2f4
      
      2017-01-05  Martin Liska  <mliska@suse.cz>
      
      	* vimrc: Update indentation definition.
      
      From-SVN: r244094
      Martin Liska committed
    • re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load… · d80c6d02
      re PR rtl-optimization/78812 (Wrong code generation due to hoisting memory load across function call)
      
      	PR tree-optimizatin/78812
      	* rtl.h (contains_mem_rtx_p): Prototype.
      	* ifcvt.c (containts_mem_rtx_p): Move from here to...
      	* rtlanal.c (contains_mem_rtx_p): Here and remvoe static linkage.
      	* gcse.c (prune_expressions): Use contains_mem_rtx_p to discover
      	and prune MEMs that are not at the toplevel of a SET_SRC rtx.  Look
      	through ZERO_EXTEND and SIGN_EXTEND when trying to avoid pruning
      	MEMs.
      
      	PR tree-optimization/78812
      	* g++.dg/torture/pr78812.C: New test.
      
      From-SVN: r244093
      Jeff Law committed
    • re PR libstdc++/78996 (<variant> uses macro as name) · 0f9cf7ff
      2017-01-05  Tim Shen  <timshen@google.com>
      
      	PR libstdc++/78996
      	* include/std/variant (__gen_vtable_impl): rename __unused to
      	__dimensions to avoid naming conflict.
      
      From-SVN: r244092
      Tim Shen committed
    • [bootstrap-O3] add a default initializer to avoid a warning at -O3 · a954833d
      Building with the bootstrap-O3 configuration option fails to compile
      input.c due to an AFAICT false-positive warning about an uninitialized
      use of a variable.
      
      This patch adds a default initializer to silence it.
      
      for  gcc/ChangeLog
      
      	* input.c (assert_char_at_range): Default-initialize
      	actual_range.
      
      From-SVN: r244091
      Alexandre Oliva committed
    • [bootstrap-O3] use unsigned type for regno in df-scan · 460bdc0a
      This patch fixes a false-positive warning in df-scan, at bootstrap-O3
      failed, and enables GCC to optimize out the code that leads to the
      warning.
      
      df_ref_create_structure was inlined into the else part of
      df_ref_record.  Due to the condition of the corresponding if, In the
      else part, VRP deduced unsigned regno >= FIRST_PSEUDO_REGISTER.
      
      In df_ref_create_structure, there's another regno variable,
      initialized with the same expression and value as the caller's.  GCC
      can tell as much, but this regno variable is signed.  It is used,
      shifted right, to index a hard regset bit array within a path that
      tests that this signed regno < FIRST_PSEUDO_REGISTER.
      
      GCC warned about the possible out-of-range indexing into the hard
      regset array.  It shouldn't, after all, the same regno can't possibly
      be both < FIRST_PSEUDO_REGISTER and >= FIRST_PSEUDO_REGISTER, can it?
      
      Well, the optimizers correctly decide it could, if it was a negative
      int that, when converted to unsigned, became larger than
      FIRST_PSEUDO_REGISTER.  But GCC doesn't know regno can't be negative,
      so the test could not be optimize out.  What's more, given the
      constraints, VRP correctly concluded the hard regset array would
      always be indexed by a value way outside the array index range.
      
      This patch changes the inlined regno to unsigned, like the caller's,
      so that we can now tell the conditions can't both hold, so we optimize
      out the path containing the would-be out-of-range array indexing.
      
      for  gcc/ChangeLog
      
      	* df-scan.c (df_ref_create_structure): Make regno unsigned,
      	to match the caller.
      
      From-SVN: r244090
      Alexandre Oliva committed
    • [-fcompare-debug] find jump before debug insns in expand · 4dbebf6f
      A debug insn after the final jump of a basic block may cause the
      expander to emit a dummy move where the non-debug compile won't
      because it finds the jump insn at the end of the insn stream.
      
      Fix the condition so that, instead of requiring the jump as the last
      insn, it also matches a jump followed by debug insns.
      
      This fixes the compilation of libgcc/libgcov-profiler.c with
      -fcompare-debug on i686-linux-gnu.
      
      for  gcc/ChangeLog
      
      	* cfgexpand.c (expand_gimple_basic_block): Disregard debug
      	insns after final jump in test to emit dummy move.
      
      From-SVN: r244089
      Alexandre Oliva committed
    • [-fcompare-debug] skip more debug stmts in cleanup_empty_eh · 55665504
      Various Ada RTS files failed -fcompare-debug compilation because debug
      stmts prevented EH cleanups from taking place.  Adjusting
      cleanup_empty_eh to skip them fixes it.
      
      for  gcc/ChangeLog
      
      	* gimple-iterator.h (gsi_one_nondebug_before_end_p): New.
      	* tree-eh.c (cleanup_empty_eh): Skip more debug stmts.
      
      From-SVN: r244088
      Alexandre Oliva committed
    • [bootstrap-O3,fortran] add a NULL initializer to avoid a warning at -O3 · 69221690
      Building with the bootstrap-O3 configuration option fails to compile
      fortran/module.c due to an AFAICT false-positive warning about an
      uninitialized use of a variable.
      
      This patch adds a dummy initializer to silence it.
      
      for  gcc/fortran/ChangeLog
      
      	* module.c (load_omp_udrs): Initialize name.
      
      From-SVN: r244087
      Alexandre Oliva committed
    • [bootstrap-O1] add initializers to avoid warnings at -O1 · d61d5fcd
      Building with the bootstrap-O1 configuration option fails to compile a
      number of files due to AFAICT false-positive warnings about uses of
      uninitialized variables.
      
      This patch adds dummy initializers to silence them all.
      
      for  gcc/ChangeLog
      
      	* multiple_target.c (create_dispatcher_calls): Init e_next.
      	* tree-ssa-loop-split.c (split_loop): Init border.
      	* tree-vect-loop.c (vect_determine_vectorization_factor): Init
      	scalar_type.
      
      From-SVN: r244086
      Alexandre Oliva committed
    • Fix ChangeLog date · 08edc320
      From-SVN: r244085
      Michael Meissner committed
    • re PR target/71977 (powerpc64: Use VSR when operating on float and integer) · fba4b861
      [gcc]
      2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR target/71977
      	PR target/70568
      	PR target/78823
      	* config/rs6000/predicates.md (sf_subreg_operand): New predicate.
      	(altivec_register_operand): Do not return true if the operand
      	contains a SUBREG mixing SImode and SFmode.
      	(vsx_register_operand): Likewise.
      	(vsx_reg_sfsubreg_ok): New predicate.
      	(vfloat_operand): Do not return true if the operand contains a
      	SUBREG mixing SImode and SFmode.
      	(vint_operand): Likewise.
      	(vlogical_operand): Likewise.
      	(gpc_reg_operand): Likewise.
      	(int_reg_operand): Likewise.
      	* config/rs6000/rs6000-protos.h (valid_sf_si_move): Add
      	declaration.
      	* config/rs6000/rs6000.c (valid_sf_si_move): New function to
      	determine if a MOVSI or MOVSF operation contains SUBREGs that mix
      	SImode and SFmode.
      	(rs6000_emit_move_si_sf_subreg): New helper function.
      	(rs6000_emit_move): Call rs6000_emit_move_si_sf_subreg to possbily
      	fixup SUBREGs involving SImode and SFmode.
      	* config/rs6000/vsx.md (SFBOOL_*): New constants that are operand
      	numbers for the new peephole2 optimization.
      	(peephole2 for SFmode unions): New peephole2 to optimize cases in
      	the GLIBC math library that do AND/IOR/XOR operations on single
      	precision floating point.
      	* config/rs6000/rs6000.h (TARGET_NO_SF_SUBREG): New internal
      	target macros to say whether we need to avoid SUBREGs mixing
      	SImode and SFmode.
      	(TARGET_ALLOW_SF_SUBREG): Likewise.
      	* config/rs6000/rs6000.md (UNSPEC_SF_FROM_SI): New unspecs.
      	(UNSPEC_SI_FROM_SF): Likewise.
      	(iorxor): Change spacing.
      	(and_ior_xor): New iterator for AND, IOR, and XOR.
      	(movsi_from_sf): New insns for SImode/SFmode SUBREG support.
      	(movdi_from_sf_zero_ext): Likewise.
      	(mov<mode>_hardfloat, FMOVE32 iterator): Use register_operand
      	instead of gpc_reg_operand.  Add SImode/SFmode SUBREG support.
      	(movsf_from_si): New insn for SImode/SFmode SUBREG support.
      	(fma<mode>4): Use gpc_reg_operand instead of register_operand.
      	(fms<mode>4): Likewise.
      	(fnma<mode>4): Likewise.
      	(fnms<mode>4): Likewise.
      	(nfma<mode>4): Likewise.
      	(nfms<mode>4): Likewise.
      
      [gcc/testsuite]
      2017-01-04  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	PR target/71977
      	PR target/70568
      	PR target/78823
      	* gcc.target/powerpc/pr71977-1.c: New tests to check whether on
      	64-bit VSX systems with direct move, whether we optimize common
      	code sequences in the GLIBC math library for float math functions.
      	* gcc.target/powerpc/pr71977-2.c: Likewise.
      
      From-SVN: r244084
      Michael Meissner committed
    • Daily bump. · 179925d2
      From-SVN: r244083
      GCC Administrator committed
    • * pt_BR.po, ru.po: Update. · e04916e3
      From-SVN: r244080
      Joseph Myers committed
  2. 04 Jan, 2017 23 commits
    • re PR c++/64767 (Could GCC warn when a pointer is compared against '\0'?) · a9342885
      	PR c++/64767
      	* c.opt (Wpointer-compare): New option.
      
      	* c-parser.c (c_parser_postfix_expression): Mark zero character
      	constants by setting original_type in c_expr.
      	* c-typeck.c (parser_build_binary_op): Warn when a pointer is compared
      	with a zero character constant.
      	(char_type_p): New function.
      
      	* typeck.c (cp_build_binary_op): Warn when a pointer is compared with
      	a zero character literal.
      
      	* doc/invoke.texi: Document -Wpointer-compare.
      
      	* c-c++-common/Wpointer-compare-1.c: New test.
      
      From-SVN: r244076
      Marek Polacek committed
    • re PR c++/78949 (incorrect "unused variable" warning with SSE2) · abec4284
      	PR c++/78949
      	* typeck.c (cp_build_unary_op): Call mark_rvalue_use on arg if it has
      	vector type.
      
      	* c-c++-common/Wunused-var-16.c: New test.
      
      From-SVN: r244075
      Jakub Jelinek committed
    • re PR c++/78693 (Bogus 'inconsistent deduction for ‘auto’' error when having a… · 26c43e27
      re PR c++/78693 (Bogus 'inconsistent deduction for ‘auto’' error when having a dependent initializer and a nondependent one in the same declaration)
      
      	PR c++/78693
      	* parser.c (cp_parser_simple_declaration): Only complain about
      	inconsistent auto deduction if auto_result doesn't use auto.
      
      	* g++.dg/cpp0x/pr78693.C: New test.
      
      From-SVN: r244074
      Jakub Jelinek committed
    • optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without RejectNegative. · 742b1804
      	* optc-gen.awk: Emit #error for -W*/-f*/-m* Enum without
      	RejectNegative.
      
      From-SVN: r244073
      Jakub Jelinek committed
    • re PR driver/78957 (ICE: SIGSEGV with -fno-sso-struct=web) · fc73e60c
      	PR driver/78957
      	* c.opt (fsso-struct=): Add RejectNegative.
      
      	* gcc.dg/pr78957.c: New test.
      
      From-SVN: r244072
      Jakub Jelinek committed
    • parser.c (cp_parser_simple_declaration): Diagnose function declaration among… · c9cf3863
      parser.c (cp_parser_simple_declaration): Diagnose function declaration among more than one init-declarators with auto...
      
      	* parser.c (cp_parser_simple_declaration): Diagnose function
      	declaration among more than one init-declarators with auto
      	specifier.
      
      	* g++.dg/cpp1y/auto-fn34.C: New test.
      
      From-SVN: r244071
      Jakub Jelinek committed
    • re PR c++/71182 (parser.c cp_lexer_previous_token sanitizer detects member call on null pointer) · 066435fe
      	PR c++/71182
      	* parser.c (cp_lexer_previous_token): Use vec_safe_address in the
      	assertion, as lexer->buffer may be NULL.
      
      	* g++.dg/cpp0x/pr71182.C: New test.
      
      From-SVN: r244070
      Jakub Jelinek committed
    • dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for… · fb85f9d0
      dwarf2out.c (output_loc_list): Don't throw away 64K+ location descriptions for -gdwarf-5 and emit them as...
      
      	* dwarf2out.c (output_loc_list): Don't throw away 64K+ location
      	descriptions for -gdwarf-5 and emit them as uleb128 instead of
      	2-byte data.
      
      From-SVN: r244069
      Jakub Jelinek committed
    • re PR target/78056 (build failure on Power7) · 598bd687
      gcc/testsuite/ChangeLog:
      
      2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	PR target/78056
      	* gcc.target/powerpc/pr78056-1.c: New test.
      	* gcc.target/powerpc/pr78056-2.c: New test.
      	* gcc.target/powerpc/pr78056-3.c: New test.
      	* gcc.target/powerpc/pr78056-4.c: New test.
      	* gcc.target/powerpc/pr78056-5.c: New test.
      	* gcc.target/powerpc/pr78056-6.c: New test.
      	* gcc.target/powerpc/pr78056-7.c: New test.
      	* gcc.target/powerpc/pr78056-8.c: New test.
      	* lib/target-supports.exp
      	(check_effective_target_powerpc_popcntb_ok): New procedure to test
      	whether the effective target supports the popcntb instruction.
      
      gcc/ChangeLog:
      
      2017-01-04  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	PR target/78056
      	* doc/sourcebuild.texi (PowerPC-specific attributes): Add
      	documentation of the powerpc_popcntb_ok attribute.
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add
      	code to issue warning messages if a requested CPU configuration is
      	not supported by the binary (assembler and loader) toolchain.
      	(spe_init_builtins): Add two assertions to prevent ICE if attempt is
      	made to define a built-in function that has been disabled.
      	(paired_init_builtins): Add assertion to prevent ICE if attempt is
      	made to define a built-in function that has been disabled.
      	(altivec_init_builtins): Add comment explaining why definition
      	of the DST built-in functions is not preceded by an assertion
      	check.  Add assertions to prevent ICE if attempts are made to
      	define an altivec predicate or an abs* built-in function that has
      	been disabled.
      	(htm_init_builtins): Add comment explaining why definition of the
      	htm built-in functions is not preceded by an assertion check.
      
      From-SVN: r244068
      Kelvin Nilsen committed
    • re PR tree-optimization/67955 (tree-dse does not use pointer info) · 8194635a
      	PR tree-optimizatin/67955
      	* tree-ssa-alias.c (same_addr_size_stores_p): Check offsets first.
      	Allow any SSA_VAR_P as the base objects.  Use integer_zerop.  Verify
      	the points-to solution does not include pt_null.  Use DECL_PT_UID
      	unconditionally.
      
      	PR tree-optimization/67955
      	* gcc.dg/tree-ssa/ssa-dse-28.c: New test.
      
      From-SVN: r244067
      Jeff Law committed
    • re PR c++/77545 (ICE on valid C++11 code: in potential_constant_expression_1, at… · baf9ebc8
      re PR c++/77545 (ICE on valid C++11 code: in potential_constant_expression_1, at cp/constexpr.c:5480)
      
      	PR c++/77545
      	PR c++/77284
      	* constexpr.c (potential_constant_expression_1): Handle CLEANUP_STMT.
      
      	* g++.dg/cpp0x/range-for32.C: New test.
      	* g++.dg/cpp0x/range-for33.C: New test.
      
      From-SVN: r244062
      Marek Polacek committed
    • C FE: implement fix-it hint for -Wmissing-braces · 5dd9a9d0
      gcc/c/ChangeLog:
      	* c-parser.c (c_parser_declaration_or_fndef): Create a
      	rich_location at init_loc and parse it to start_init.
      	(last_init_list_comma): New global.
      	(c_parser_braced_init): Update last_init_list_comma when parsing
      	commas.  Pass it to pop_init_level.  Pass location of closing
      	brace to pop_init_level.
      	(c_parser_postfix_expression_after_paren_type): Create a
      	rich_location at type_loc and parse it to start_init.
      	(c_parser_omp_declare_reduction): Likewise for loc.
      	* c-tree.h (start_init): Add rich_location * param.
      	(pop_init_level): Add location_t param.
      	* c-typeck.c (struct initializer_stack): Add field
      	"missing_brace_richloc".
      	(start_init): Add richloc param, use it to initialize
      	the stack node's missing_brace_richloc.
      	(last_init_list_comma): New decl.
      	(finish_implicit_inits): Pass last_init_list_comma to
      	pop_init_level.
      	(push_init_level): When finding missing open braces, add fix-it
      	hints to the richloc.
      	(pop_init_level): Add "insert_before" param and pass it
      	when calling pop_init_level.  Add fixits about missing
      	close braces to any richloc.  Use the richloc for the
      	-Wmissing-braces warning.
      	(set_designator): Pass last_init_list_comma to pop_init_level.
      	(process_init_element): Likewise.
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/Wmissing-braces-fixits.c: New test case.
      
      From-SVN: r244061
      David Malcolm committed
    • update-copyright.py (GCCCmdLine): Add include, libcc1, libiberty, libssp, libvtv… · d0a0bfd9
      update-copyright.py (GCCCmdLine): Add include, libcc1, libiberty, libssp, libvtv and lto-plugin to default_dirs.
      
      	* update-copyright.py (GCCCmdLine): Add include, libcc1, libiberty,
      	libssp, libvtv and lto-plugin to default_dirs.
      
      From-SVN: r244060
      Jakub Jelinek committed
    • Make MIPS soft-fp preserve NaN payloads for NAN2008. · fec5f4e0
      The MIPS sfp-machine.h has an _FP_CHOOSENAN implementation which
      emulates hardware semantics of not preserving signaling NaN payloads
      for an operation with two NaN arguments (although that doesn't suffice
      to avoid sNaN payload preservation in any case with just one NaN
      argument).
      
      However, those are only hardware semantics in the legacy NaN case; in
      the NAN2008 case, the architecture documentation says hardware
      preserves payloads in such cases.  Furthermore, this implementation
      assumes legacy NaN semantics, so in the NAN2008 case the
      implementation actually has the effect of preserving sNaN payloads but
      not preserving qNaN payloads, when both should be preserved.
      
      This patch fixes the code just to copy from the first argument (at the
      level of libgcc, it's not meaningful which argument is the first and
      which is the second).
      
      Tested for mips64-linux-gnu (soft float, NAN2008) with the glibc math/
      tests.
      
      	* config/mips/sfp-machine.h (_FP_CHOOSENAN): Always preserve NaN
      	payload if [__mips_nan2008].
      
      From-SVN: r244059
      Joseph Myers committed
    • i386.md (HI/SImode test with imm to QImode splitters): Use gen_int_mode instead… · 58adb11b
      i386.md (HI/SImode test with imm to QImode splitters): Use gen_int_mode instead of gen_lopwart for const_int operands.
      
      	* config/i386/i386.md (HI/SImode test with imm to QImode splitters):
      	Use gen_int_mode instead of gen_lopwart for const_int operands.
      
      From-SVN: r244058
      Uros Bizjak committed
    • PR78968 add configure check for __cxa_thread_atexit in libc · 2a792efe
      	PR libstdc++/78968
      	* config.h.in: Regenerate.
      	* configure: Likewise.
      	* configure.ac: Check for __cxa_thread_atexit.
      	* libsupc++/atexit_thread.cc [_GLIBCXX_HAVE___CXA_THREAD_ATEXIT]:
      	Don't define __cxa_thread_atexit if libc provides it.
      
      From-SVN: r244057
      Jonathan Wakely committed
    • re PR c++/66735 ([C++14] lambda init-capture fails for const references) · 4bf07f3f
      	cp/
      	PR c++/66735
      	* cp-tree.h (DECLTYPE_FOR_REF_CAPTURE): New.
      	(lambda_capture_field_type): Update prototype.
      	* lambda.c (lambda_capture_field_type): Add is_reference parm.
      	Add referenceness here.
      	(add_capture): Adjust lambda_capture_field_type call, refactor
      	error checking.
      	* pt.c (tsubst): Adjust lambda_capture_field_type call.
      
      	testsuite/
      	PR c++/66735
      	* g++.dg/cpp1y/pr66735.C: New.
      
      From-SVN: r244056
      Nathan Sidwell committed
    • [DWARF] New DWARF operation "DW_OP_AARCH64_operation" for AArch64 · 65793e42
      include/
      	* dwarf2.def (DW_OP_AARCH64_operation): Reserve the number 0xea.
      	(DW_CFA_GNU_window_save): Comments the multiplexing on AArch64.
      
      
      Co-Authored-By: Jiong Wang <jiong.wang@arm.com>
      
      From-SVN: r244055
      Richard Earnshaw committed
    • Implement 2801, Default-constructibility of unique_ptr. · 13086769
      * include/bits/unique_ptr.h (__uniq_ptr_impl::_DeleterConstraint): New.
      (unique_ptr::_DeleterConstraint): Likewise.
      (unique_ptr()): Constrain.
      (unique_ptr(pointer)): Likewise.
      (unique_ptr(nullptr_t)): Likewise.
      (unique_ptr<_Tp[], _Dp>::_DeleterConstraint): New.
      (unique_ptr<_Tp[], _Dp>::unique_ptr()): Constrain.
      (unique_ptr<_Tp[], _Dp>::unique_ptr(_Up)): Likewise.
      (unique_ptr<_Tp[], _Dp>::unique_ptr(nullptr_t)): Likewise.
      * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust.
      * testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc: Likewise.
      * testsuite/20_util/unique_ptr/cons/default.cc: New.
      * testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc: Adjust.
      
      From-SVN: r244054
      Ville Voutilainen committed
    • Update copyright years. · 2afd3180
      From-SVN: r244052
      Jakub Jelinek committed
    • Support exception propagation without lock-free atomic int · ed3cb497
      2017-01-04  Pauli Nieminen  <suokkos@gmail.com>
      	    Jonathan Wakely  <jwakely@redhat.com>
      
      	PR libstdc++/64735
      	* acinclude.m4 (GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER): Define.
      	* config.h.in: Regenerate.
      	* config/abi/pre/gnu.ver [HAVE_EXCEPTION_PTR_SINCE_GCC46]
      	(GLIBCXX_3.4.15, GLIBCXX_3.4.21, CXXABI_1.3.3, CXXABI_1.3.5): Make
      	exports for exception_ptr, nested_exception, and future conditional.
      	[HAVE_EXCEPTION_PTR_SINCE_GCC46] (GLIBCXX_3.4.23, CXXABI_1.3.11): Add
      	exports for exception_ptr, nested_exception, and future conditional.
      	* configure: Regenerate.
      	* configure.ac: Use GLIBCXX_CHECK_EXCEPTION_PTR_SYMVER.
      	* include/std/future: Remove check for ATOMIC_INT_LOCK_FREE
      	* libsupc++/eh_atomics.h: New file for internal use only.
      	(__eh_atomic_inc, __eh_atomic_dec): New.
      	* libsupc++/eh_ptr.cc (exception_ptr::_M_addref)
      	(exception_ptr::_M_release) (__gxx_dependent_exception_cleanup)
      	(rethrow_exception): Use eh_atomics.h reference counting helpers.
      	* libsupc++/eh_throw.cc (__gxx_exception_cleanup): Likewise.
      	* libsupc++/eh_tm.cc (free_any_cxa_exception): Likewise.
      	* libsupc++/exception: Remove check for ATOMIC_INT_LOCK_FREE.
      	* libsupc++/exception_ptr.h: Likewise.
      	* libsupc++/guard.cc: Include header for ATOMIC_INT_LOCK_FREE macro.
      	* libsupc++/nested_exception.cc: Remove check for
      	ATOMIC_INT_LOCK_FREE.
      	* libsupc++/nested_exception.h: Likewise.
      	* src/c++11/future.cc: Likewise.
      	* testsuite/18_support/exception_ptr/*: Remove atomic builtins checks.
      	* testsuite/18_support/nested_exception/*: Likewise.
      	* testsuite/30_threads/async/*: Likewise.
      	* testsuite/30_threads/future/*: Likewise.
      	* testsuite/30_threads/headers/future/types_std_c++0x.cc: Likewise.
      	* testsuite/30_threads/packaged_task/*: Likewise.
      	* testsuite/30_threads/promise/*: Likewise.
      	* testsuite/30_threads/shared_future/*: Likewise.
      
      Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
      
      From-SVN: r244051
      Pauli Nieminen committed
    • re PR tree-optimization/71563 (Regression in GCC-7.0.0's optimizer.) · 165ba2e9
      	PR tree-optimization/71563
      	* match.pd: Simplify X << Y into X if Y is known to be 0 or
      	out of range value - has low bits known to be zero.
      
      	* gcc.dg/tree-ssa/pr71563.c: New test.
      
      From-SVN: r244050
      Jakub Jelinek committed
    • Update configure deps, remove stray \xA0 in picflag.m4, regenerate · 8f56cb51
      Also fix a stray changelog entry.  Some of the regen here is due to
      previous changes not being regenerated properly, in part due to the
      missing configure dependencies.
      
      	* configure: Regenerate.
      config/
      	* picflag.m4: Remove stray \xA0 in comment.
      gcc/
      	* Makefile.in (aclocal_deps): Update and order as per aclocal.m4.
      	* configure: Regenerate.
      	* config.in: Regenerate.
      libada/
      	* Makefile.in (configure_deps): Update and order as per
      	configure.ac sinclude.
      	* configure: Regenerate.
      libgcc/
      	* Makefile.in (configure_deps): Update.
      	* configure: Regenerate.
      libiberty/
      	* Makefile.in (configure_deps): Update.
      	* configure: Regenerate.
      libitm/
      	* Makefile.in: Regenerate.
      	* testsuite/Makefile.in: Regenerate.
      
      From-SVN: r244049
      Alan Modra committed