1. 22 Nov, 2017 23 commits
    • re PR c++/60336 (empty struct value is passed differently in C and C++) · 974aedcc
      	PR c++/60336
      	PR middle-end/67239
      	PR target/68355
      	* c-decl.c (grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* class.c (layout_class_type): Set DECL_PADDING_P on padding.
      	* decl.c (cxx_init_decl_processing): Set TRANSLATION_UNIT_WARN_EMPTY_P.
      	(grokdeclarator): Set DECL_PADDING_P on unnamed bit-fields.
      
      	* lto.c (compare_tree_sccs_1): Compare TYPE_EMPTY_P and DECL_PADDING_P.
      
      	* calls.c (initialize_argument_information): Call
      	warn_parameter_passing_abi target hook.
      	(store_one_arg): Use 0 for empty record size.  Don't push 0 size
      	argument onto stack.
      	(must_pass_in_stack_var_size_or_pad): Return false for empty types.
      	* common.opt: Update -fabi-version description.
      	* config/i386/i386.c (init_cumulative_args): Set cum->warn_empty.
      	(ix86_gimplify_va_arg): Call arg_int_size_in_bytes instead of
      	int_size_in_bytes.
      	(ix86_is_empty_record): New function.
      	(ix86_warn_parameter_passing_abi): New function.
      	(TARGET_EMPTY_RECORD_P): Redefine.
      	(TARGET_WARN_PARAMETER_PASSING_ABI): Redefine.
      	* config/i386/i386.h (CUMULATIVE_ARGS): Add warn_empty.
      	* doc/tm.texi: Regenerated.
      	* doc/tm.texi.in (TARGET_EMPTY_RECORD_P,
      	TARGET_WARN_PARAMETER_PASSING_ABI): Add.
      	* dwarf2out.c (get_ultimate_context): Move to tree.c.
      	* explow.c (hard_function_value): Call arg_int_size_in_bytes
      	instead of int_size_in_bytes.
      	* expr.c (copy_blkmode_to_reg): Likewise.
      	* function.c (aggregate_value_p): Return 0 for empty types.
      	(assign_parm_find_entry_rtl): Call warn_parameter_passing_abi target hook.
      	(locate_and_pad_parm): Call arg size_in_bytes instead
      	size_in_bytes.
      	* lto-streamer-out.c (hash_tree): Hash TYPE_EMPTY_P and DECL_PADDING_P.
      	* stor-layout.c (finalize_type_size): Set TYPE_EMPTY_P.
      	* target.def (empty_record_p, warn_parameter_passing_abi): New target
      	hooks.
      	* targhooks.c (hook_void_CUMULATIVE_ARGS_tree): New hook.
      	(std_gimplify_va_arg_expr): Skip empty records.  Call
      	arg_size_in_bytes instead size_in_bytes.
      	* targhooks.h (hook_void_CUMULATIVE_ARGS_tree): Declare.
      	* tree-core.h (tree_type_common): Add empty_flag.
      	(tree_decl_common): Update comments.
      	* tree-streamer-in.c (unpack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(unpack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree-streamer-out.c (pack_ts_decl_common_value_fields): Stream
      	DECL_PADDING_P.
      	(pack_ts_type_common_value_fields): Stream TYPE_EMPTY_P.
      	* tree.c (default_is_empty_type): New function.
      	(default_is_empty_record): New function.
      	(arg_int_size_in_bytes): New function.
      	(arg_size_in_bytes): New function.
      	(get_ultimate_context): New function.
      	* tree.h: Define TYPE_EMPTY_P, DECL_PADDING_P and
      	TRANSLATION_UNIT_WARN_EMPTY_P.
      	(default_is_empty_record, arg_int_size_in_bytes,
      	arg_size_in_bytes, get_ultimate_context): Declare.
      
      	* g++.dg/abi/empty12.C: New test.
      	* g++.dg/abi/empty12.h: New test.
      	* g++.dg/abi/empty12a.c: New test.
      	* g++.dg/abi/empty13.C: New test.
      	* g++.dg/abi/empty13.h: New test.
      	* g++.dg/abi/empty13a.c: New test.
      	* g++.dg/abi/empty14.C: New test.
      	* g++.dg/abi/empty14.h: New test.
      	* g++.dg/abi/empty14a.c: New test.
      	* g++.dg/abi/empty15.C: New test.
      	* g++.dg/abi/empty15.h: New test.
      	* g++.dg/abi/empty15a.c: New test.
      	* g++.dg/abi/empty16.C: New test.
      	* g++.dg/abi/empty16.h: New test.
      	* g++.dg/abi/empty16a.c: New test.
      	* g++.dg/abi/empty17.C: New test.
      	* g++.dg/abi/empty17.h: New test.
      	* g++.dg/abi/empty17a.c: New test.
      	* g++.dg/abi/empty18.C: New test.
      	* g++.dg/abi/empty18.h: New test.
      	* g++.dg/abi/empty18a.c: New test.
      	* g++.dg/abi/empty19.C: New test.
      	* g++.dg/abi/empty19.h: New test.
      	* g++.dg/abi/empty19a.c: New test.
      	* g++.dg/abi/empty20.C: New test.
      	* g++.dg/abi/empty21.C: New test.
      	* g++.dg/abi/empty22.C: New test.
      	* g++.dg/abi/empty22.h: New test.
      	* g++.dg/abi/empty22a.c: New test.
      	* g++.dg/abi/empty23.C: New test.
      	* g++.dg/abi/empty24.C: New test.
      	* g++.dg/abi/empty25.C: New test.
      	* g++.dg/abi/empty25.h: New test.
      	* g++.dg/abi/empty25a.c: New test.
      	* g++.dg/abi/empty26.C: New test.
      	* g++.dg/abi/empty26.h: New test.
      	* g++.dg/abi/empty26a.c: New test.
      	* g++.dg/abi/empty27.C: New test.
      	* g++.dg/abi/empty28.C: New test.
      	* g++.dg/abi/pr60336-1.C: New test.
      	* g++.dg/abi/pr60336-10.C: New test.
      	* g++.dg/abi/pr60336-11.C: New test.
      	* g++.dg/abi/pr60336-12.C: New test.
      	* g++.dg/abi/pr60336-2.C: New test.
      	* g++.dg/abi/pr60336-3.C: New test.
      	* g++.dg/abi/pr60336-4.C: New test.
      	* g++.dg/abi/pr60336-5.C: New test.
      	* g++.dg/abi/pr60336-6.C: New test.
      	* g++.dg/abi/pr60336-7.C: New test.
      	* g++.dg/abi/pr60336-8.C: New test.
      	* g++.dg/abi/pr60336-9.C: New test.
      	* g++.dg/abi/pr68355.C: New test.
      	* g++.dg/lto/pr60336_0.C: New test.
      
      Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
      Co-Authored-By: Jason Merrill <jason@redhat.com>
      
      From-SVN: r255066
      Marek Polacek committed
    • [ARM] Factor out CMSE register clearing code · fc7160b2
      Functions cmse_nonsecure_call_clear_caller_saved and
      cmse_nonsecure_entry_clear_before_return both contain very similar code
      to clear registers. What's worse, they differ slightly at times so if a
      bug is found in one careful thoughts is needed to decide whether the
      other function needs fixing too.
      
      This commit addresses the situation by factoring the two pieces of code
      into a new function. In doing so the code generated to clear VFP
      registers in cmse_nonsecure_call now uses the same sequence as
      cmse_nonsecure_entry functions. Tests expectation are thus updated
      accordingly.
      
      2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.c (cmse_clear_registers): New function.
          (cmse_nonsecure_call_clear_caller_saved): Replace register clearing
          code by call to cmse_clear_registers.
          (cmse_nonsecure_entry_clear_before_return): Likewise.
      
          gcc/testsuite/
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-13.c: Adapt expectations
          to vmov instructions now generated.
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-7.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard-sp/cmse-8.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-13.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-7.c: Likewise.
          * gcc.target/arm/cmse/mainline/hard/cmse-8.c: Likewise.
      
      From-SVN: r255065
      Thomas Preud'homme committed
    • 2017-11-22 Tamar Christina <tamar.christina@arm.com> · 9388732a
      	* config/arm/arm_neon.h (vdot_u32, vdotq_u32)
      	(vdot_s32, vdotq_s32): New.
      	(vdot_lane_u32, vdotq_lane_u32): New.
      	(vdot_lane_s32, vdotq_lane_s32): New.
      
      
      gcc/testsuite/
      2017-11-22  Tamar Christina  <tamar.christina@arm.com>
      
      	* gcc.target/arm/simd/vdot-compile.c: New.
      	* gcc.target/arm/simd/vect-dot-qi.h: New.
      	* gcc.target/arm/simd/vect-dot-s8.c: New.
      	* gcc.target/arm/simd/vect-dot-u8.c: New
      
      From-SVN: r255064
      Tamar Christina committed
    • target-supports.exp (check_effective_target_bswap16): Do not skip on alpha and x86 targets. · e88efb99
      	* lib/target-supports.exp (check_effective_target_bswap16):
      	Do not skip on alpha and x86 targets.
      
      From-SVN: r255063
      Uros Bizjak committed
    • compiler: make comparison operator() methods const · 9e951dd6
          
          This is required for new versions of libstdc++ in C++17 mode.
          
          Fixes GCC PR 83102.
          
          Reviewed-on: https://go-review.googlesource.com/79396
      
      From-SVN: r255062
      Ian Lance Taylor committed
    • [ARM] Fix test armv8_2-fp16-move-1.c · 543382b7
      2017-11-22  Sudakshina Das  <sudi.das@arm.com>
      
      	* gcc.target/arm/armv8_2-fp16-move-1.c: Add -mfloat-abi=hard option.
      
      From-SVN: r255061
      Sudakshina Das committed
    • PR82547: Undetected overflow for UNSIGNED wide_ints · 2131f7f5
      wi::add_large and wi::sub_large weren't setting the overflow bit
      correctly for unsigned operations if the result needed fewer HWIs
      than the precision.
      
      2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR middle-end/82547
      	* wide-int.cc (wi::add_large, wi::sub_large): Fix overflow detection
      	for unsigned values with fewer HWIs than the precision.
      	(test_overflow): New function.
      	(wide_int_cc_tests): Call it.
      
      From-SVN: r255059
      Richard Sandiford committed
    • PR83004: Accidental change to pr81136.c for VECTOR_BITS==128 · a76ef9c5
      r254589 was supposed to leave tests unchanged for the default
      VECTOR_BITS==128, but I must have got my sums wrong on pr81136.c.
      
      2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/testsuite/
      	PR testsuite/83004
      	* gcc.dg/vect/pr81136.c: Restore previous alignment of 32
      	in the default case.
      
      From-SVN: r255058
      Richard Sandiford committed
    • Fix calculation of ptr_mode for MODE_PARTIAL_INT Pmode · f95c5b8e
      This patch fixes a regression caused by r251469, where I'd incorrectly
      converted a call to mode_for_size that sometimes needs MODE_PARTIAL_INTs.
      
      2017-11-22  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* emit-rtl.c (init_derived_machine_modes): Make sure ptr_mode
      	has the same mode class as Pmode.
      
      From-SVN: r255057
      Richard Sandiford committed
    • arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of padding_bits_to_clear_ptr. · 902c4e8f
      2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Get rid of
          padding_bits_to_clear_ptr.
          (cmse_nonsecure_entry_clear_before_return): Likewise.
      
      From-SVN: r255056
      Thomas Preud'homme committed
    • [ARM] Use bitmap to control cmse_nonsecure_call register clearing · b24de9a6
      As part of r253256, cmse_nonsecure_entry_clear_before_return has been
      rewritten to use auto_sbitmap instead of an integer bitfield to control
      which register needs to be cleared. This commit continues this work in
      cmse_nonsecure_call_clear_caller_saved.
      
      2017-11-22  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/
          * config/arm/arm.c (cmse_nonsecure_call_clear_caller_saved): Use
          auto_sbitap instead of integer bitfield to control register needing
          clearing.
      
      From-SVN: r255055
      Thomas Preud'homme committed
    • re PR tree-optimization/83044 (ice in contains_struct_check) · ff479068
      	PR tree-optimization/83044
      	* tree-vrp.c (vrp_prop::check_array_ref): If eltsize is not
      	INTEGER_CST or is 0, clear up_bound{,_p1} and later ignore tests
      	that need the upper bound.  Subtract offset from
      	get_addr_base_and_unit_offset only if positive and subtract it
      	before division by eltsize rather than after it.
      
      	* gcc.dg/pr83044.c: New test.
      	* c-c++-common/Warray-bounds.c (fb): Fix up MAX value.
      
      From-SVN: r255054
      Jakub Jelinek committed
    • re PR fortran/79072 (ICE with class(*) pointer function result and character value) · a7d3cd40
      2017-11-22  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/79072
      	* trans-stmt.c (trans_associate_var): Weaken the over strong
      	condition for using the fake result decl.
      
      2017-11-22  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/79072
      	* gfortran.dg/class_result_6.f90: New test for comment 10 of
      	the PR.
      
      From-SVN: r255053
      Paul Thomas committed
    • PR go/83102 relax std::set checks for invocable comparison object · e350134d
      	PR go/83102
      	* include/bits/stl_tree.h (_Rb_tree): Relax invocable checks for
      	comparison object pre-C++17.
      
      From-SVN: r255052
      Jonathan Wakely committed
    • re PR debug/83084 (-fcompare-debug failure on ppc64le) · aaa49b45
      	PR debug/83084
      	* valtrack.c (propagate_for_debug_subst, propagate_for_debug): Reset
      	debug insns if they would contain UNSPEC_VOLATILE or volatile asm.
      	(dead_debug_insert_temp): Likewise, but also ignore even non-volatile
      	asm.
      
      	* g++.dg/opt/pr83084.C: New test.
      
      From-SVN: r255051
      Jakub Jelinek committed
    • re PR middle-end/82875 (ICE at -Os on valid code on x86_64-linux-gnu: in… · a2998ed1
      re PR middle-end/82875 (ICE at -Os on valid code on x86_64-linux-gnu: in find_widening_optab_handler_and_mode, at optabs-query.c:414)
      
      	PR middle-end/82875
      	* optabs.c (expand_doubleword_mult, expand_binop): Before calling
      	expand_binop with *mul_widen_optab, make sure at least one of the
      	operands doesn't have VOIDmode.
      
      	* gcc.dg/pr82875.c: New test.
      	* gcc.c-torture/compile/pr82875.c: New test.
      
      From-SVN: r255050
      Jakub Jelinek committed
    • re PR debug/83034 (ice in mem_loc_descriptor, at dwarf2out.c :15669) · 0a770b59
      	PR debug/83034
      	* dwarf2out.c (mem_loc_descriptor): Handle VEC_SERIES.
      
      	* gcc.dg/pr83034.c: New test.
      
      From-SVN: r255049
      Jakub Jelinek committed
    • re PR rtl-optimization/82044 (runtime signed integer overflow in… · 213ffde2
      re PR rtl-optimization/82044 (runtime signed integer overflow in check_mem_read_rtx() and all_positions_needed_p() in dse.c)
      
      	PR rtl-optimization/82044
      	PR tree-optimization/82042
      	* dse.c (record_store): Check for overflow.
      	(check_mem_read_rtx): Properly check for overflow if width == -1, call
      	add_wild_read instead of clear_rhs_from_active_local_stores on
      	overflow and log it into dump_file.
      
      From-SVN: r255048
      Jakub Jelinek committed
    • gimple-iterator.c (gimple_find_edge_insert_loc): Ignore fake edges to exit when… · 608c0f63
      gimple-iterator.c (gimple_find_edge_insert_loc): Ignore fake edges to exit when looking for a place to insert.
      
      2017-11-22  Richard Biener  <rguenther@suse.de>
      
      	* gimple-iterator.c (gimple_find_edge_insert_loc): Ignore
      	fake edges to exit when looking for a place to insert.
      	* tree-ssa-pre.c (clear_expression_ids): Inline into callers
      	and remove.
      	(insert_into_preds_of_block): Commit edge insertion immediately,
      	assert that doesn't require new BBs.
      	(fini_pre): Release expressions.
      	(pass_pre::execute): Shuffle things around a bit, if the fn
      	is too large do not compute AVAIL either as this is really the
      	quadratic bit.
      
      From-SVN: r255047
      Richard Biener committed
    • PR 83070 Fix -Wsign-compare warning · 9cf7bfd9
      2017-11-22  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR libfortran/83070
              * intrinsics/eoshift0.c (eoshift0): Fix -Wsign-compare warning by
              making a_ex and r_ex index_type instead of size_t.
      
      From-SVN: r255045
      Janne Blomqvist committed
    • re PR tree-optimization/83089 (ICE: Segmentation fault (in instantiate_scev_name)) · 8f8e5326
      2017-11-22  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/83089
      	* tree-if-conv.c (pass_if_conversion::execute): If anything
      	changed reset SCEV and free the number of iteration estimates.
      
      	* gcc.dg/pr83089.c: New testcase.
      
      From-SVN: r255044
      Richard Biener committed
    • libgo: don't use grep -q in mksigtab.sh · ce143aa6
          
          Solaris grep does not support the -q option.
          
          Reviewed-on: https://go-review.googlesource.com/79239
      
      From-SVN: r255042
      Ian Lance Taylor committed
    • Daily bump. · 2ee325a5
      From-SVN: r255041
      GCC Administrator committed
  2. 21 Nov, 2017 17 commits
    • C: don't suggest names that came from earlier failures (PR c/83056) · d4300cc6
      PR c/83056 reports an issue affecting trunk and gcc-7 in which
      the C frontend's implementation of lookup_name_fuzzy uses undeclared
      identifiers as suggestions when encountering subsequent undeclared
      identifiers.
      
      The fix is to filter out the names bound to error_mark_node
      in lookup_name_fuzzy.
      
      The C++ frontend is unaffected, as it already does this.
      
      gcc/c/ChangeLog:
      	PR c/83056
      	* c-decl.c (lookup_name_fuzzy): Don't suggest names that came from
      	earlier failed lookups.
      
      gcc/testsuite/ChangeLog:
      	PR c/83056
      	* gcc.dg/spellcheck-pr83056.c: New test case.
      
      From-SVN: r255038
      David Malcolm committed
    • re PR tree-optimization/82945 (add warning for passing non-strings to functions… · 6f9b7472
      re PR tree-optimization/82945 (add warning for passing non-strings to functions that expect string arguments)
      
      gcc/ChangeLog:
      
      	PR tree-optimization/82945
      	* calls.h (warn_nonstring_bound): Remove unused function.
      
      From-SVN: r255036
      Martin Sebor committed
    • PR libstdc++/48101 improve errors for invalid container specializations · 866e4d38
      	PR libstdc++/48101
      	* include/bits/allocator.h (allocator<const _Tp>)
      	(allocator<volatile _Tp>, allocator<const volatile _Tp>): Add partial
      	specializations.
      	* include/bits/forward_list.h (forward_list): Add static assertions.
      	* include/bits/hashtable.h (__cache_default): Use
      	__is_nothrow_invocable instead of __is_noexcept_hash.
      	(_Hashtable): Add static assertions.
      	* include/bits/hashtable_policy.h (__is_noexcept_hash): Remove.
      	* include/bits/stl_deque.h (deque): Add static assertions.
      	* include/bits/stl_function.h (_Identity<const _Tp>): Add partial
      	specialization.
      	* include/bits/stl_list.h (list): Add static assertions.
      	* include/bits/stl_map.h (map): Likewise.
      	* include/bits/stl_multimap.h (multimap): Likewise.
      	* include/bits/stl_multiset.h (multiset): Likewise.
      	* include/bits/stl_set.h (set): Likewise.
      	* include/bits/stl_tree.h (_Rb_tree): Likewise.
      	* include/bits/stl_vector.h (vector): Likewise.
      	* include/bits/unordered_map.h (unordered_map, unordered_multimap):
      	Use typename instead of class in template-parameter-list and remove
      	spaces.
      	* include/bits/unordered_set.h (unordered_set, unordered_multiset):
      	Likewise.
      	* testsuite/23_containers/deque/48101-2_neg.cc: New test.
      	* testsuite/23_containers/deque/48101_neg.cc: New test.
      	* testsuite/23_containers/forward_list/48101-2_neg.cc: New test.
      	* testsuite/23_containers/forward_list/48101_neg.cc: New test.
      	* testsuite/23_containers/list/48101-2_neg.cc: New test.
      	* testsuite/23_containers/list/48101_neg.cc: New test.
      	* testsuite/23_containers/map/48101-2_neg.cc: New test.
      	* testsuite/23_containers/map/48101_neg.cc: New test.
      	* testsuite/23_containers/map/operations/31440.cc: Fix comparison
      	object to have const-qualified call operator.
      	* testsuite/23_containers/multimap/48101-2_neg.cc: New test.
      	* testsuite/23_containers/multimap/48101_neg.cc: New test.
      	* testsuite/23_containers/multiset/48101-2_neg.cc: New test.
      	* testsuite/23_containers/multiset/48101_neg.cc: New test.
      	* testsuite/23_containers/set/48101-2_neg.cc: New test.
      	* testsuite/23_containers/set/48101_neg.cc: New test.
      	* testsuite/23_containers/unordered_map/48101-2_neg.cc: New test.
      	* testsuite/23_containers/unordered_map/48101_neg.cc: New test.
      	* testsuite/23_containers/unordered_multimap/48101-2_neg.cc: New test.
      	* testsuite/23_containers/unordered_multimap/48101_neg.cc: New test.
      	* testsuite/23_containers/unordered_multiset/48101-2_neg.cc: New test.
      	* testsuite/23_containers/unordered_multiset/48101_neg.cc: New test.
      	* testsuite/23_containers/unordered_set/48101-2_neg.cc: New test.
      	* testsuite/23_containers/unordered_set/48101_neg.cc: New test.
      	* testsuite/23_containers/unordered_set/instantiation_neg.cc: Adjust
      	dg-error line number.
      	* testsuite/23_containers/vector/48101-2_neg.cc: New test.
      	* testsuite/23_containers/vector/48101_neg.cc: New test.
      
      From-SVN: r255035
      Jonathan Wakely committed
    • PR tree-optimization/82945 - add warning for passing non-strings to functions… · 6a33d0ff
      PR tree-optimization/82945 - add warning for passing non-strings to functions that expect string arguments
      
      gcc/ChangeLog:
      
      	PR tree-optimization/82945
      	* builtins.c (expand_builtin_strlen): Call maybe_warn_nonstring_arg.
      	* calls.h (maybe_warn_nonstring_arg): Declare new function.
      	* calls.c (get_attr_nonstring_decl, maybe_warn_nonstring_arg): New
      	functions.
      	(initialize_argument_information): Call maybe_warn_nonstring_arg.
      	* calls.h (get_attr_nonstring_decl): Declare new function.
      	* doc/extend.texi (attribute nonstring): Update.
      	* gimple-fold.c (gimple_fold_builtin_strncpy): Call
      	get_attr_nonstring_decl and handle it.
      	* tree-ssa-strlen.c (maybe_diag_stxncpy_trunc): Same.  Improve
      	detection of nul-termination.
      	(strlen_to_stridx): Change to a pointer.
      	(handle_builtin_strlen, handle_builtin_stxncpy): Adjust.
      	(pass_strlen::execute): Same.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/82945
      	* c-c++-common/Wstringop-truncation-2.c: New test.
      	* c-c++-common/Wstringop-truncation.c: Adjust.
      	* c-c++-common/attr-nonstring-2.c: Adjust.
      	* c-c++-common/attr-nonstring-3.c: New test.
      
      From-SVN: r255031
      Martin Sebor committed
    • i386-opts.h (enum prefer_vector_width): Added new enum for the new option… · ab2c4ec8
      i386-opts.h (enum prefer_vector_width): Added new enum for the new option -mprefer-vector-width=[none|128|256|512].
      
      	* config/i386/i386-opts.h (enum prefer_vector_width): Added new enum
      	for the new option -mprefer-vector-width=[none|128|256|512].
      	* config/i386/i386.c (ix86_target_string): remove old style options
      	-mprefer-avx256 and make -mprefer-avx128 as alias.
      	(ix86_option_override_internal):  Apply defaults for the
      	-mprefer-vector-width=[128|256] option.
      	* config/i386/i386.h (TARGET_PREFER_AVX128, TARGET_PREFER_AVX256):
      	Implement macros to work with -mprefer-vector-width=.
      	* config/i386/i386.opt: Implemented option
      	-mprefer-vector-width=[none|128|256|512].
      	* doc/invoke.texi: Documentation for
      	-mprefer-vector-width=[none|128|256|512].
      
      gcc/testsuite/
      
      	* g++.dg/ext/pr57362.C (__attribute__): Test
      	prefer-vector-width=[128|256] target attribute.
      	* gcc.target/i386/avx512f-constant-float-return.c (dg-optioins):
      	Use -mprefer-vector-width=256 instead of -mprefer-avx256.
      	* gcc.target/i386/avx512f-prefer.c: Ditto.
      	* gcc.target/i386/pr82460-2.c: Ditto.
      
      From-SVN: r255030
      Sergey Shalnov committed
    • Add quotes for constexpr keyword. · 84fa214d
      2017-11-21  Martin Liska  <mliska@suse.cz>
      
      	* class.c (finalize_literal_type_property): Add quotes for
      	constexpr keyword.
      	(explain_non_literal_class): Likewise.
      	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
      	(is_valid_constexpr_fn): Likewise.
      	(check_constexpr_ctor_body): Likewise.
      	(register_constexpr_fundef): Likewise.
      	(explain_invalid_constexpr_fn): Likewise.
      	(cxx_eval_builtin_function_call): Likewise.
      	(cxx_eval_call_expression): Likewise.
      	(cxx_eval_loop_expr): Likewise.
      	(potential_constant_expression_1): Likewise.
      	* decl.c (check_previous_goto_1): Likewise.
      	(check_goto): Likewise.
      	(grokfndecl): Likewise.
      	(grokdeclarator): Likewise.
      	* error.c (maybe_print_constexpr_context): Likewise.
      	* method.c (process_subob_fn): Likewise.
      	(defaulted_late_check): Likewise.
      	* parser.c (cp_parser_compound_statement): Likewise.
      2017-11-21  Martin Liska  <mliska@suse.cz>
      
      	* g++.dg/cpp0x/constexpr-48089.C: Add quotes for constexpr
      	keyword; add dg-message for 'in .constexpr. expansion of '.
      	* g++.dg/cpp0x/constexpr-50060.C: Likewise.
      	* g++.dg/cpp0x/constexpr-60049.C: Likewise.
      	* g++.dg/cpp0x/constexpr-70323.C: Likewise.
      	* g++.dg/cpp0x/constexpr-70323a.C: Likewise.
      	* g++.dg/cpp0x/constexpr-cast.C: Likewise.
      	* g++.dg/cpp0x/constexpr-diag3.C: Likewise.
      	* g++.dg/cpp0x/constexpr-ex1.C: Likewise.
      	* g++.dg/cpp0x/constexpr-generated1.C: Likewise.
      	* g++.dg/cpp0x/constexpr-ice16.C: Likewise.
      	* g++.dg/cpp0x/constexpr-ice5.C: Likewise.
      	* g++.dg/cpp0x/constexpr-incomplete2.C: Likewise.
      	* g++.dg/cpp0x/constexpr-neg1.C: Likewise.
      	* g++.dg/cpp0x/constexpr-recursion.C: Likewise.
      	* g++.dg/cpp0x/constexpr-shift1.C: Likewise.
      	* g++.dg/cpp1y/constexpr-70265-1.C: Likewise.
      	* g++.dg/cpp1y/constexpr-70265-2.C: Likewise.
      	* g++.dg/cpp1y/constexpr-79655.C: Likewise.
      	* g++.dg/cpp1y/constexpr-new.C: Likewise.
      	* g++.dg/cpp1y/constexpr-return2.C: Likewise.
      	* g++.dg/cpp1y/constexpr-shift1.C: Likewise.
      	* g++.dg/cpp1y/constexpr-throw.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
      	* g++.dg/ext/constexpr-vla1.C: Likewise.
      	* g++.dg/ext/constexpr-vla2.C: Likewise.
      	* g++.dg/ext/constexpr-vla3.C: Likewise.
      	* g++.dg/cpp0x/static_assert10.C: Likewise.
      	* g++.dg/cpp1y/pr63996.C: Likewise.
      	* g++.dg/cpp1y/pr68180.C: Likewise.
      	* g++.dg/cpp1y/pr77830.C: Likewise.
      	* g++.dg/ubsan/pr63956.C: Likewise.
      
      From-SVN: r255025
      Martin Liska committed
    • ppc-asm.h (f50, vs50): Fix values. · fc3605f1
      	* config/rs6000/ppc-asm.h (f50, vs50): Fix values.
      
      From-SVN: r255024
      Pat Haugen committed
    • Fix invalid XML in libstdc++ manual · b99415b7
      2017-11-21  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
      
      	* doc/xml/manual/using.xml (manual.intro.using.macros): Move
      	variablelist element at the end of its list.
      
      From-SVN: r255023
      Przemyslaw Wirkus committed
    • Improve -Wmaybe-uninitialized documentation · 4bd9c84c
      	* doc/invoke.texi (-Wmaybe-uninitialized): Rephrase for clarity.
      
      From-SVN: r255022
      Jonathan Wakely committed
    • New POINTER_DIFF_EXPR · 1af4ebf5
      2017-11-21  Marc Glisse  <marc.glisse@inria.fr>
      
      gcc/c/
      	* c-fold.c (c_fully_fold_internal): Handle POINTER_DIFF_EXPR.
      	* c-typeck.c (pointer_diff): Use POINTER_DIFF_EXPR.
      
      gcc/c-family/
      	* c-pretty-print.c (pp_c_additive_expression,
      	c_pretty_printer::expression): Handle POINTER_DIFF_EXPR.
      
      gcc/cp/
      	* constexpr.c (cxx_eval_constant_expression,
      	potential_constant_expression_1): Handle POINTER_DIFF_EXPR.
      	* cp-gimplify.c (cp_fold): Likewise.
      	* error.c (dump_expr): Likewise.
      	* typeck.c (pointer_diff): Use POINTER_DIFF_EXPR.
      
      gcc/
      	* doc/generic.texi: Document POINTER_DIFF_EXPR, update
      	POINTER_PLUS_EXPR.
      	* cfgexpand.c (expand_debug_expr): Handle POINTER_DIFF_EXPR.
      	* expr.c (expand_expr_real_2): Likewise.
      	* fold-const.c (const_binop, fold_addr_of_array_ref_difference,
      	fold_binary_loc): Likewise.
      	* match.pd (X-X, P+(Q-P), &D-P, (P+N)-P, P-(P+N), (P+M)-(P+N),
      	P-Q==0, -(A-B), X-Z<Y-Z, (X-Z)-(Y-Z), Z-X<Z-Y, (Z-X)-(Z-Y),
      	(A-B)+(C-A)): New transformations for POINTER_DIFF_EXPR, based on
      	MINUS_EXPR transformations.
      	* optabs-tree.c (optab_for_tree_code): Handle POINTER_DIFF_EXPR.
      	* tree-cfg.c (verify_expr, verify_gimple_assign_binary): Likewise.
      	* tree-inline.c (estimate_operator_cost): Likewise.
      	* tree-pretty-print.c (dump_generic_node, op_code_prio,
      	op_symbol_code): Likewise.
      	* tree-vect-stmts.c (vectorizable_operation): Likewise.
      	* vr-values.c (extract_range_from_binary_expr): Likewise.
      	* varasm.c (initializer_constant_valid_p_1): Likewise.
      	* tree.def: New tree code POINTER_DIFF_EXPR.
      
      From-SVN: r255021
      Marc Glisse committed
    • * config/i386/i386.md: Missing file from my previous commit. · ffb41aab
      From-SVN: r255019
      Uros Bizjak committed
    • re PR c++/83045 (-Wreturn-type regression in C++) · 826eccc6
      	PR c++/83045
      	* tree-cfg.c (pass_warn_function_return::execute): Formatting fix.
      	Also warn if seen __builtin_unreachable () call with BUILTINS_LOCATION.
      	Use LOCATION_LOCUS when comparing against UNKNOWN_LOCATION.
      
      	* c-c++-common/pr61405.c (fn0, fn1): Add return stmts.
      	* c-c++-common/Wlogical-op-2.c (fn): Likewise.
      	* g++.dg/debug/pr53466.C: Add -Wno-return-type to dg-options.
      	* g++.dg/opt/combine.C: Likewise.
      	* g++.dg/ubsan/return-3.C: Likewise.
      	* g++.dg/pr59445.C: Likewise.
      	* g++.dg/pr49847.C: Likewise.
      	* g++.dg/ipa/pr61800.C: Likewise.
      	* g++.dg/ipa/pr63470.C: Likewise.
      	* g++.dg/ipa/pr68672-1.C: Likewise.
      	* g++.dg/pr58438.C: Likewise.
      	* g++.dg/torture/pr59265.C: Likewise.
      	* g++.dg/tree-ssa/ssa-dse-2.C: Likewise.
      	* g++.old-deja/g++.eh/catch13.C: Likewise.
      	* g++.old-deja/g++.eh/crash1.C: Likewise.
      	* g++.dg/tm/pr60004.C: Expect -Wreturn-type warning.
      	* g++.dg/torture/pr55740.C: Likewise.
      	* g++.dg/torture/pr43257.C: Likewise.
      	* g++.dg/torture/pr64280.C: Likewise.
      	* g++.dg/torture/pr54684.C: Likewise.
      	* g++.dg/torture/pr56694.C: Likewise.
      	* g++.dg/torture/pr68470.C: Likewise.
      	* g++.dg/torture/pr60648.C: Likewise.
      	* g++.dg/torture/pr71281.C: Likewise.
      	* g++.dg/torture/pr52772.C: Add -Wno-return-type dg-additional-options.
      	* g++.dg/torture/pr64669.C: Likewise.
      	* g++.dg/torture/pr58369.C: Likewise.
      	* g++.dg/torture/pr33627.C: Likewise.
      	* g++.dg/torture/predcom-1.C: Add
      	#pragma GCC diagnostic ignored "-Wreturn-type".
      	* g++.dg/lto/20090221_0.C: Likewise.
      	* g++.dg/lto/20091026-1_1.C: Likewise.
      	* g++.dg/lto/pr54625-1_1.C: Likewise.
      	* g++.dg/warn/pr83045.C: New test.
      
      From-SVN: r255018
      Jakub Jelinek committed
    • i386.md (*bswap<mode>2_movbe): Add integer suffix to movbe mnemonic. · 8fccb0a6
      	* config/i386/i386.md (*bswap<mode>2_movbe): Add
      	integer suffix to movbe mnemonic.
      	(*bswaphi2_movbe): Ditto.
      	(bswaphi_lowpart): Merge with *bswaphi_lowpart_1.
      
      testsuite/ChangeLog:
      
      	* gcc.target/i386/movbe-1.c: Update scan string for movbe
      	with integer suffix.
      	* gcc.target/i386/movbe-2.c: Ditto.
      	* gcc.target/i386/movbe-3.c: Ditto.
      	* gcc.target/i386/movbe-4.c: Ditto.
      	* gcc.target/i386/movbe-5.c: Ditto.
      
      From-SVN: r255017
      Uros Bizjak committed
    • * gcc.target/i386/pr82713.c: Fix dg directive. · 40a90224
      From-SVN: r255016
      Uros Bizjak committed
    • re PR c++/83020 (('17) Class template constructor call skipped with no error… · 00709c08
      re PR c++/83020 (('17) Class template constructor call skipped with no error when substitution fails in default argument)
      
      2017-11-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/83020
      	* g++.dg/cpp1z/pr83020.C: New.
      
      From-SVN: r255006
      Paolo Carlini committed
    • Remove not needed xstrdup_for_dump. · 769ae3bb
      2017-11-21  Martin Liska  <mliska@suse.cz>
      
      	* tree-inline.c (expand_call_inline):
      	  Remove not needed xstrdup_for_dump.
      
      From-SVN: r255005
      Martin Liska committed
    • re PR target/82880 (gcc --help=target --help=optimizers hangs on mips) · 06988296
      	PR target/82880
      	* config/mips/frame-header-opt.c (mips_register_frame_header_opt):
      	Remove static keyword from f variable.
      
      	* gcc.dg/opts-8.c: New test.
      
      From-SVN: r255004
      Jakub Jelinek committed