1. 22 Mar, 2018 12 commits
  2. 21 Mar, 2018 28 commits
    • Adjust __builtin_tgmath handling of integer arguments to _FloatN narrowing macros. · c5c5822a
      When adding __builtin_tgmath to support a better tgmath.h
      implementation, I noted that further changes might be needed regarding
      the TS 18661 functions that round their results to a narrower type,
      because of unresolved issues with how the corresponding type-generic
      macros are defined in TS 18661.
      
      The resolution of those issues is still in flux, but the latest
      version does indeed require something slightly different from
      __builtin_tgmath.  It specifies that integer arguments to type-generic
      macros such as f32xadd are treated as _Float64 not double - which was
      also present in earlier versions of the resolution - but then it also
      specifies different handling for _Float64 arguments and double
      arguments, which wasn't in earlier versions.  Specifically, in the
      latest version
      <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2213.pdf>, f32xadd
      with _Float64 arguments would call f32xaddf64, while f32xadd with
      double arguments would call f32xaddf64x.  Since integer arguments are
      converted directly to the argument type of the selected function (not
      to double / _Float64x unless that ends up as the argument type), this
      is a user-visible difference in semantics that means __builtin_tgmath
      actually needs to implement treating integer arguments as _Float64 in
      this case (the rest of the latest semantics can then be implemented in
      the header, with a few inline functions there).
      
      To avoid releasing with the older version of the __builtin_tgmath
      semantics that doesn't work with the latest proposed DR#13 resolution,
      this patch implements a rule in __builtin_tgmath that maps integer
      types to _Float64 (respectively _Complex _Float64 for complex integer
      types) where all the specified functions return the same _FloatN or
      _FloatNx type.  This does not affect any existing uses of
      __builtin_tgmath in glibc's or GCC's tgmath.h since I haven't yet
      added any of these type-generic macros to glibc when adding the
      corresponding narrowing functions.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      	* doc/extend.texi (__builtin_tgmath): Document when complex
      	integer types are treated as _Complex _Float64.
      
      gcc/c:
      	* c-parser.c (c_parser_postfix_expression): For __builtin_tgmath
      	where all functions return the same _FloatN or _FloatNx type,
      	treat integer types as _Float64 instead of double.
      
      gcc/testsuite:
      	* gcc.dg/builtin-tgmath-3.c: New test.
      
      From-SVN: r258751
      Joseph Myers committed
    • [doc] Remove pasto in __builtin_extend_pointer doc · f4274af8
      2018-03-21  Tom de Vries  <tom@codesourcery.com>
      
      	* doc/extend.texi (__builtin_extend_pointer): Remove pasto.
      
      From-SVN: r258750
      Tom de Vries committed
    • [PR c++/71965] silence multi-dim array init sorry without tf_error · 0186f684
      We shouldn't substitute templates into short-circuited-out concepts
      constraints, but we do, and to add insult to injury, we issue a
      sorry() error when a concept that shouldn't even have been substituted
      attempts to perform a multi-dimensional array initialization with a
      new{} expression.
      
      Although fixing the requirements short-circuiting is probably too
      risky at this point, we can get closer to the intended effect by
      silencing that sorry just as we silence other errors.
      
      for  gcc/cp/ChangeLog
      
      	PR c++/71965
      	* init.c (build_vec_init): Silence error, former sorry,
      	without tf_error.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/71965
      	* g++.dg/concepts/pr71965.C: New.
      
      From-SVN: r258749
      Alexandre Oliva committed
    • [PR c++/84610,84642] recover from implicit template parms gracefully · 7446b353
      If we get a parse error during an attempted fully implicit function
      template parse, and need to skip to the end of the statement or block,
      we may discard the function parms scope rather than the enclosing
      injected implicit template parms scope.  If we rollback a tentative
      parse and try something else, we'll no longer be in a function parms
      scope, but rather in a template parms scope, but we may still attempt
      to synthesize implicit template parms and then fail the assert that
      checks we're in a function parms scope.
      
      This patch introduces an alternative to
      finish_fully_implicit_template_p, to be used during error recovery,
      that floats the implicit template parm scope to the top so that it
      gets discarded as we finish and discard the failed implicit template
      data, while other scopes are retained as expected.  It also clears the
      implicit template parser data as we finish the template, so that it
      doesn't linger on referencing discarded or used scopes and parms.
      
      for gcc/cp/ChangeLog
      
      	PR c++/84610
      	PR c++/84642
      	* parser.c (abort_fully_implicit_template_p): New.
      	(cp_parser_skip_to_end_of_statement): Use it.
      	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
      	(finish_fully_implicit_template_p): Clear
      	implicit_template_parms and implicit_template_scope.
      
      for  gcc/testsuite/ChangeLog
      
      	PR c++/84610
      	PR c++/84642
      	* g++.dg/cpp0x/pr84610.C: New.
      	* g++.dg/cpp0x/pr84642.C: New.
      
      From-SVN: r258748
      Alexandre Oliva committed
    • re PR c/84999 (ICE in make_vector_type, at tree.c:9561) · aa1c9429
      	PR c/84999
      	* c-typeck.c (build_binary_op): If c_common_type_for_size fails when
      	building vector comparison, diagnose it and return error_mark_node.
      
      	* c-c++-common/pr84999.c: New test.
      
      From-SVN: r258747
      Jakub Jelinek committed
    • re PR c++/84972 (ICE: tree check: expected class 'type', have 'exceptional'… · e299d4fc
      re PR c++/84972 (ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in extended_tree, at tree.h:5545)
      
      /cp
      2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84972
      	* decl.c (maybe_deduce_size_from_array_init): Set TREE_TYPE to
      	error_mark_node when check_array_designated_initializer fails.
      
      /testsuite
      2018-03-21  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/84972
      	* g++.dg/ext/desig10.C: New.
      
      From-SVN: r258746
      Paolo Carlini committed
    • re PR fortran/84957 (ICE in gfc_sym_type, at fortran/trans-types.c:2255) · 482768bd
      2018-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
      	Harald Anlauf  <anlauf@gmx.de>
      
      	PR fortran/84957
      	* trans-types.c (gfc_sym_type): Do not dereference NULL pointer.
      
      2018-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
      	Harald Anlauf  <anlauf@gmx.de>
      
      	PR fortran/84957
      	* gfortran.dg/pr84957.f90: New test.
      
      
      Co-Authored-By: Harald Anlauf <anlauf@gmx.de>
      
      From-SVN: r258745
      Thomas Koenig committed
    • re PR tree-optimization/84960 (ICE in GIMPLE pass: isolate-paths) · 3e129b5b
      	PR tree-optimization/84960
      	* tree-cfg.c (remove_bb): Don't move forced labels into bb->prev_bb
      	if it is ENTRY block, move them into single succ of ENTRY in that case.
      
      	* gcc.c-torture/compile/pr84960.c: New test.
      
      From-SVN: r258744
      Jakub Jelinek committed
    • poly_span_traits fixes (PR 84811) · 535808fd
      This patch fixes incorrect results for HOST_WIDE_INT positions
      at opposite extremes when used with HOST_WIDE_INT sizes.  It also
      fixes UB when comparing such positions with unsigned HOST_WIDE_INT
      sizes (although the results in that case were wrapv-correct).
      
      2018-03-20  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR tree-optimization/84811
      	* poly-int.h (poly_span_traits): Remove the T3 parameter and
      	promote HOST_WIDE_INT T2 - T1 results to unsigned HOST_WIDE_INT.
      	(maybe_in_range_p, known_in_range_p, ranges_known_overlap_p):
      	(known_subrange_p): Update accordingly.  Cast each value involved
      	in the size comparison, rather than casting the result of the
      	subtraction.
      
      gcc/testsuite/
      	PR tree-optimization/84811
      	* gcc.dg/torture/pr84811.c: New test.
      
      From-SVN: r258743
      Richard Sandiford committed
    • re PR tree-optimization/84982 (logically inverting bools into local array… · e215422f
      re PR tree-optimization/84982 (logically inverting bools into local array results in bitwise negation)
      
      	PR tree-optimization/84982
      	* gimple-ssa-store-merging.c (invert_op): Handle boolean inversion
      	by flipping the least significant bit rather than all bits from
      	bitpos to bitpos + bitsize - 1.
      
      	* c-c++-common/pr84982.c: New test.
      
      From-SVN: r258742
      Jakub Jelinek committed
    • re PR c++/84961 (ICE error: SSA_NAME_DEF_STMT is wrong) · 57e20f74
      	PR c++/84961
      	* cp-tree.h (genericize_compound_lvalue): Declare.
      	* typeck.c (genericize_compound_lvalue): New function.
      	(unary_complex_lvalue, cp_build_modify_expr): Use it.
      	* semantics.c (finish_asm_stmt): Replace MODIFY_EXPR, PREINCREMENT_EXPR
      	and PREDECREMENT_EXPR in output and "m" constrained input operands with
      	COMPOUND_EXPR.  Call cxx_mark_addressable on the rightmost
      	COMPOUND_EXPR operand.
      
      	* c-c++-common/pr43690.c: Don't expect errors on "m" (--x) and
      	"m" (++x) in C++.
      	* g++.dg/torture/pr84961-1.C: New test.
      	* g++.dg/torture/pr84961-2.C: New test.
      
      From-SVN: r258741
      Jakub Jelinek committed
    • [PR c++/85008] ICE looking for clone · b2595987
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01129.html
      	PR c++/85008
      	* tree.c (decl_linkage): Use DECL_CLONED_FUNCTION_P.
      	* decl2.c (vague_linkage_p): Likewise.
      
      	PR c++/85008
      	* g++.dg/pr85008.C: New.
      
      From-SVN: r258738
      Nathan Sidwell committed
    • PR 84615 Regressions due to type mismatch with character functions · 983d49dd
      Since the kind of the hidden character length variable is not part of
      the character variable definition, we must ensure that character
      lengths are always of the same kind in interfaces, regardless of how
      they were declared in the source. This patch ensures this when calling
      a procedure.
      
      Regtested on x86_64-pc-linux-gnu and i686-pc-linux-gnu.
      
      gcc/fortran/ChangeLog:
      
      2018-03-21  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/84615
      	* trans-expr.c (gfc_conv_procedure_call): Convert charlen to
      	gfc_charlen_type_node when calling procedure.
      
      gcc/testsuite/ChangeLog:
      
      2018-03-21  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/84615
      	* gfortran.dg/char_result_17.f90: New test.
      
      From-SVN: r258736
      Janne Blomqvist committed
    • C++: show private field accessor hints with -g and optimization (PR c++/84994) · 5afef8b1
      gcc/cp/ChangeLog:
      	PR c++/84994
      	* constexpr.c (constexpr_fn_retval): Make non-"static".
      	* cp-tree.h (constexpr_fn_retval): New decl.
      	* search.c (direct_accessor_p): Update leading comment.
      	(reference_accessor_p): Likewise.
      	(field_accessor_p): Replace check that function body is a
      	RETURN_EXPR with a call to constexpr_fn_retval.  Fix
      	indentation of "field_type" decl.
      
      gcc/testsuite/ChangeLog:
      	PR c++/84994
      	* g++.dg/other/accessor-fixits-1.C: Move to...
      	* g++.dg/torture/accessor-fixits-1.C: ...here.
      	* g++.dg/other/accessor-fixits-2.C: Move to...
      	* g++.dg/torture/accessor-fixits-2.C: ...here.
      	* g++.dg/other/accessor-fixits-3.C: Move to...
      	* g++.dg/torture/accessor-fixits-3.C: ...here.
      	* g++.dg/other/accessor-fixits-4.C: Move to...
      	* g++.dg/torture/accessor-fixits-4.C: ...here.
      	* g++.dg/other/accessor-fixits-5.C: Move to...
      	* g++.dg/torture/accessor-fixits-5.C: ...here.
      	* g++.dg/torture/accessor-fixits-6.C: New testcase.
      	* g++.dg/torture/accessor-fixits-7.C: New testcase.
      	* g++.dg/torture/accessor-fixits-8.C: New testcase.
      
      From-SVN: r258731
      David Malcolm committed
    • Remove long-dead deprecation documentation · aa3dd753
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01083.html
      	* doc/extend.texi (Deprecated Features): Remove mention of
      	long-deleted deprecations.
      
      From-SVN: r258730
      Nathan Sidwell committed
    • xfail gcc.dg/tree-ssa/pr84512.c on 64-bit sparc · adb0355f
      	* gcc.dg/tree-ssa/pr84512.c: xfail on 64-bit SPARC.
      
      From-SVN: r258729
      Rainer Orth committed
    • Enable jit on Solaris: soname option and EXTRA_GCC_LIBS (PR jit/84288) · ea143da7
      	gcc/jit:
      	PR jit/84288
      	* Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS).
      
      	gcc:
      	PR jit/84288
      	* configure.ac (gcc_cv_ld_soname) <*-*-solaris2*>: Set.
      	* configure: Regenerate.
      
      From-SVN: r258727
      Rainer Orth committed
    • [ARM] Fix test pr82989.c for big endian and mthumb · 839c95d0
      The test pr82989.c which was added in one of previous commits is failing for
      mthumb and big-endian configurations. The aim of this test was to check that
      NEON instructions are not being used for simple shift operations. The scanning
      of lsl and lsr instructions and checking its counts were just too restrictive
      for different configurations. So I have now simplified the test to only check
      for the absence of NEON instructions.
      
      *** gcc/testsuite/ChangeLog ***
      
      2018-03-21  Sudakshina Das  <sudi.das@arm.com>
      
      	PR target/82989
      	* gcc.target/arm/pr82989.c: Change dg scan-assembly directives.
      
      From-SVN: r258723
      Sudakshina Das committed
    • [PR c++/84804] ICE with default arg, template friend & lambda · 5d011fcf
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01108.html
      	PR c++/84804
      	* name-lookup.c (do_pushtag): Permit lambdas to be pushed into
      	complete classes.
      
      
      	PR c++/84804
      	* g++.dg/lookup/pr84804.C: New.
      
      From-SVN: r258722
      Nathan Sidwell committed
    • Makefile.am (check-runtime): Pass -test.timeout with GOTOOLS_TEST_TIMEOUT. · 00821ad4
      	* Makefile.am (check-runtime): Pass -test.timeout
      	with GOTOOLS_TEST_TIMEOUT.
      	* Makefile.in: Rebuild.
      
      From-SVN: r258721
      Uros Bizjak committed
    • PR c++/84850 - -Wclass-memaccess on a memcpy in a copy assignment operator with… · e65fc7c5
      PR c++/84850 - -Wclass-memaccess on a memcpy in a copy assignment operator with no nontrivial bases or members
      
      gcc/cp/ChangeLog:
      
      	PR c++/84850
      	* call.c (first_non_public_field): New template and function.
      	(first_non_trivial_field): New function.
      	(maybe_warn_class_memaccess): Call them.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/84850
      	* g++.dg/Wclass-memaccess-3.C: New test.
      	* g++.dg/Wclass-memaccess-4.C: New test.
      
      From-SVN: r258719
      Martin Sebor committed
    • C++: show private field accessor hints for const accesses (PR c++/84892) · 2a80d3ae
      gcc/cp/ChangeLog:
      	PR c++/84892
      	* search.c (field_accessor_p): Use class_of_this_parm rather than
      	type_of_this_parm, to check that "this" is a "const T *", rather
      	than a "T *const".
      
      gcc/testsuite/ChangeLog:
      	PR c++/84892
      	* g++.dg/other/accessor-fixits-1.C
      	(test_access_const_t1_color): New.
      	(test_deref_const_t1_color): New.
      	* g++.dg/other/accessor-fixits-5.C: New testcase.
      
      From-SVN: r258716
      David Malcolm committed
    • MAINTAINERS with no port · 8bb406a2
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01093.html
      	* MAINTAINERS: Move maintainers of now-removed picochip and score
      	ports to write after approval.
      
      From-SVN: r258715
      Nathan Sidwell committed
    • Fix some libstdc++ testsuite failures · 5a0729f5
      	* testsuite/20_util/function_objects/comparisons_pointer.cc: Use
      	VERIFY instead of assert.
      	* testsuite/20_util/hash/84998.cc: New test.
      	* testsuite/23_containers/vector/cons/destructible_debug_neg.cc: New
      	copy of test adjusted for Debug Mode.
      	* testsuite/23_containers/vector/cons/destructible_neg.cc: Do not run
      	test in Debug Mode.
      
      From-SVN: r258714
      Jonathan Wakely committed
    • [parloops] Handle canonicalize_loop_ivs failure · c75c35e0
      2018-03-21  Tom de Vries  <tom@codesourcery.com>
      
      	PR tree-optimization/83126
      	* tree-parloops.c (num_phis): New function.
      	(gen_parallel_loop): Detect and handle canonicalize_loop_ivs failure.
      
      	* gcc.dg/graphite/pr83126.c: New test.
      
      From-SVN: r258713
      Tom de Vries committed
    • Deprecate some C++ extensions · f82ece6b
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00995.html
      	* doc/extend.texi (Deprecated Features): Update deprecared flags,
      	mention anon-struct/union members and trailing attributes.
      
      	cp/
      	* class.c (finish_struct_anon_r): Refactor, deprecate anything
      	other than public non-static data members.
      	* parser.c (cp_parser_init_declarator): Deprecate attributes after
      	parenthesized initializer.
      
      	testsuite/
      	* g++.dg/ext/anon-struct6.C: Adjust.
      	* g++.dg/ext/deprecate-1.C: New.
      	* g++.dg/ext/deprecate-2.C: New.
      	* g++.dg/lookup/pr84602.C: Adjust.
      	* g++.dg/lookup/pr84962.C: Adjust.
      	* g++.old-deja/g++.other/anon4.C
      
      From-SVN: r258712
      Nathan Sidwell committed
    • [PR c++/84836] ICE with local scopes · 7cd9cf2f
      https://gcc.gnu.org/ml/gcc-patches/2018-03/msg01082.html
      	PR c++/84836
      	* name-lookup.c (update_binding): Correct logic for local binding
      	update.
      
      	PR c++/84836
      	* g++.dg/lookup/pr84836.C: New.
      
      From-SVN: r258711
      Nathan Sidwell committed
    • re PR tree-optimization/84969 (Wrong code with -ftree-loop-distribute-patterns) · 49e4ca31
      	PR tree-optimization/84969
      	* tree-loop-distribution.c (fuse_memset_builtins): Don't reorder
      	builtin memset partitions if they set different rhs values.
      
      	gcc/testsuite
      	* gcc.dg/tree-ssa/pr84969.c: New test.
      
      From-SVN: r258710
      Bin Cheng committed