1. 30 Nov, 2019 2 commits
    • libstdc++: Fix experimental::filesystem::u8path(const Source&) for Windows · 3eda32cb
      This function failed to compile when called with a std::string.
      
      Also, constructing a path with a char8_t string did not correctly treat
      the string as already UTF-8 encoded.
      
      	* include/bits/fs_path.h (u8path(InputIterator, InputIterator))
      	(u8path(const Source&)) [_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Simplify
      	conditions.
      	* include/experimental/bits/fs_path.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
      	(__u8path(const Source&, char)): Add overloads for std::string and
      	types convertible to std::string.
      	(_Cvt::_S_wconvert): Add a new overload for char8_t strings and use
      	codecvt_utf8_utf16 to do the correct conversion.
      
      From-SVN: r278869
      Jonathan Wakely committed
    • Daily bump. · aa80d065
      From-SVN: r278868
      GCC Administrator committed
  2. 29 Nov, 2019 33 commits
    • re PR rtl-optimization/92283 (454.calculix miscomparison since r276645 with -O2 -march=znver2) · 12981e9b
      2019-11-29  Vladimir Makarov  <vmakarov@redhat.com>
      
      	PR rtl-optimization/92283
      	* lra.c (lra): Update reg notes after inheritance sub-pass and
      	before constraint sub-pass.
      
      From-SVN: r278865
      Vladimir Makarov committed
    • re PR fortran/91003 (ICE when compiling LAPACK (CGEGV) with optimization) · d005f61e
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91003
      	* tree-vect-slp.c (vect_mask_constant_operand_p): Pass in the
      	operand number, avoid handling the non-condition operands of
      	COND_EXPRs as comparisons.
      	(vect_get_constant_vectors): Pass down the operand number.
      	(vect_get_slp_defs): Likewise.
      
      	* gfortran.dg/pr91003.f90: New testcase.
      
      From-SVN: r278860
      Richard Biener committed
    • libstdc++: Adjust some function templates for coding conventions · 24cc0de9
      	* include/bits/fs_path.h (path::operator/=): Change template-head to
      	use typename instead of class.
      	* include/experimental/bits/fs_path.h (path::operator/=): Likewise.
      	* include/std/ostream (operator<<): Likewise.
      
      From-SVN: r278859
      Jonathan Wakely committed
    • libstdc++: P1423R3 char8_t remediation (4/4) · cd502796
      New tests
      
      This patch adds new tests to validate new deleted overloads of wchar_t,
      char8_t, char16_t, and char32_t for ordinary and wide formatted character and
      string ostream inserters.
      
      Additionally, new tests are added to validate invocations of u8path with
      sequences of char8_t for both the C++17 and filesystem TS implementations.
      
      2019-11-29  Tom Honermann  <tom@honermann.net>
      
      	New tests
      	* testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc:
      	New test to validate deleted overloads of character and string
      	inserters for narrow ostreams.
      	* testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc:
      	New test to validate deleted overloads of character and string
      	inserters for wide ostreams.
      	* testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc: New test
      	to validate u8path invocations with sequences of char8_t.
      	* testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc:
      	New test to validate u8path invocations with sequences of char8_t.
      
      From-SVN: r278858
      Tom Honermann committed
    • libstdc++: P1423R3 char8_t remediation (3/4) · 2b68cdc7
      Updates to existing tests
      
      This patch updates existing tests to validate the new value for the
      __cpp_lib_char8_t feature test macros and to exercise u8path factory
      function invocations with std::string, std::string_view, and interator
      pair arguments.
      
      2019-11-29  Tom Honermann  <tom@honermann.net>
      
      	Updates to existing tests
      	* testsuite/experimental/feat-char8_t.cc: Updated the expected
      	__cpp_lib_char8_t feature test macro value.
      	* testsuite/27_io/filesystem/path/factory/u8path.cc: Added testing of
      	u8path invocation with std::string, std::string_view, and iterators
      	thereof.
      	* testsuite/experimental/filesystem/path/factory/u8path.cc: Added
      	testing of u8path invocation with std::string, std::string_view, and
      	iterators thereof.
      
      From-SVN: r278857
      Tom Honermann committed
    • libstdc++: P1423R3 char8_t remediation (2/4) · 2b4e2c93
      Update feature test macro, add deleted operators, update u8path
      
      This patch increments the __cpp_lib_char8_t feature test macro, adds deleted
      operator<< overloads for basic_ostream, and modifies u8path to accept
      sequences of char8_t for both the C++17 implementation of std::filesystem, and
      the filesystem TS implementation.
      
      The implementation mechanism used for u8path differs between the C++17 and
      filesystem TS implementations.  The changes to the former take advantage of
      C++17 'if constexpr'.  The changes to the latter retain C++11 compatibility
      and rely on tag dispatching.
      
      2019-11-29  Tom Honermann  <tom@honermann.net>
      
      	Update feature test macro, add deleted operators, update u8path
      	* include/bits/c++config: Bumped the value of the __cpp_lib_char8_t
      	feature test macro.
      	* include/bits/fs_path.h (u8path): Modified u8path to accept sequences
      	of char8_t.
      	* include/experimental/bits/fs_path.h (u8path): Modified u8path to
      	accept sequences of char8_t.
      	* include/std/ostream: Added deleted overloads of wchar_t, char8_t,
      	char16_t, and char32_t for ordinary and wide formatted character and
      	string inserters.
      
      From-SVN: r278856
      Tom Honermann committed
    • libstdc++: P1423R3 char8_t remediation (1/4) · a1e7d33b
      Decouple constraints for u8path from path constructors
      
      This patch moves helper classes and functions for std::filesystem::path out of
      the class definition to a detail namespace so that they are available to the
      implementations of std::filesystem::u8path.  Prior to this patch, the SFINAE
      constraints for those implementations were specified via delegation to the
      overloads of path constructors with a std::locale parameter; it just so
      happened that those overloads had the same constraints.  As of P1423R3, u8path
      and those overloads no longer have the same constraints, so this dependency
      must be broken.
      
      This patch also updates the experimental implementation of the filesystem TS
      to add SFINAE constraints to its implementations of u8path.  These functions
      were previously unconstrained and marked with a TODO comment.
      
      This patch does not provide any intentional behavioral changes other than the
      added constraints to the experimental filesystem TS implementation of u8path.
      
      Alternatives to this refactoring would have been to make the u8path overloads
      friends of class path, or to make the helpers public members. Both of those
      approaches struck me as less desirable than this approach, though this
      approach does require more code changes and will affect implementation detail
      portions of mangled names for path constructors and inline member functions
      (mostly function template specializations).
      
      2019-11-29  Tom Honermann  <tom@honermann.net>
      
      	Decouple constraints for u8path from path constructors
      	* include/bits/fs_path.h: Moved helper utilities out of
      	std::filesystem::path into a detail namespace to make them
      	available for use by u8path.
      	* include/experimental/bits/fs_path.h: Moved helper utilities out
      	of std::experimental::filesystem::v1::path into a detail
      	namespace to make them available for use by u8path.
      
      From-SVN: r278855
      Tom Honermann committed
    • Fix ICE in re-simplification of VEC_COND_EXPR · 6851de8b
      The function maybe_resimplify_conditional_op uses operation_could_trap_p to
      check if the resulting operation of a simplification can trap.  Because of the
      changes introduced by revision r276659, this results in an ICE due to a
      violated assertion in operation_could_trap_p if the operation is a COND_EXPR or
      a VEC_COND_EXPR.  The changes have allowed those expressions to trap and
      whether they do cannot be determined without considering their condition
      which is not available to operation_could_trap_p.
      
      Change maybe_resimplify_conditional_op to inspect the condition of
      COND_EXPRs and VEC_COND_EXPRs to determine if they can trap.
      
      From-SVN: r278853
      Frederik Harwath committed
    • Fix DR_GROUP_GAP for strided accesses (PR 92677) · 7e99af48
      When dissolving an SLP-only group of accesses, we should only set
      the gap to group_size - 1 for normal non-strided groups.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/92677
      	* tree-vect-loop.c (vect_dissolve_slp_only_groups): Set the gap
      	to zero when dissolving a group of strided accesses.
      
      gcc/testsuite/
      	PR tree-optimization/92677
      	* gcc.dg/vect/pr92677.c: New test.
      
      From-SVN: r278852
      Richard Sandiford committed
    • Don't defer choice of vector type for bools (PR 92596) · 02d89550
      Now that stmt_vec_info records the choice between vector mask
      types and normal nonmask types, we can use that information in
      vect_get_vector_types_for_stmt instead of deferring the choice
      of vector type till later.
      
      vect_get_mask_type_for_stmt used to check whether the boolean inputs
      to an operation:
      (a) consistently used mask types or consistently used nonmask types; and
      (b) agreed on the number of elements.
      
      (b) shouldn't be a problem when (a) is met.  If the operation
      consistently uses mask types, tree-vect-patterns.c will have corrected
      any mismatches in mask precision.  (This is because we only use mask
      types for a small well-known set of operations and tree-vect-patterns.c
      knows how to handle any that could have different mask precisions.)
      And if the operation consistently uses normal nonmask types, there's
      no reason why booleans should need extra vector compatibility checks
      compared to ordinary integers.
      
      So the potential difficulties all seem to come from (a).  Now that
      we've chosen the result type ahead of time, we also have to consider
      whether the outputs and inputs consistently use mask types.
      
      Taking each vectorizable_* routine in turn:
      
      - vectorizable_call
      
          vect_get_vector_types_for_stmt only handled booleans specially
          for gassigns, so vect_get_mask_type_for_stmt never had chance to
          handle calls.  I'm not sure we support any calls that operate on
          booleans, but as things stand, a boolean result would always have
          a nonmask type.  Presumably any vector argument would also need to
          use nonmask types, unless it corresponds to internal_fn_mask_index
          (which is already a special case).
      
          For safety, I've added a check for mask/nonmask combinations here
          even though we didn't check this previously.
      
      - vectorizable_simd_clone_call
      
          Again, vect_get_mask_type_for_stmt never had chance to handle calls.
          The result of the call will always be a nonmask type and the patch
          for PR 92710 rejects mask arguments.  So all booleans should
          consistently use nonmask types here.
      
      - vectorizable_conversion
      
          The function already rejects any conversion between booleans in which
          one type isn't a mask type.
      
      - vectorizable_operation
      
          This function definitely needs a consistency check, e.g. to handle
          & and | in which one operand is loaded from memory and the other is
          a comparison result.  Ideally we'd handle this via pattern stmts
          instead (like we do for the all-mask case), but that's future work.
      
      - vectorizable_assignment
      
          VECT_SCALAR_BOOLEAN_TYPE_P requires single-bit precision, so the
          current code already rejects problematic cases.
      
      - vectorizable_load
      
          Loads always produce nonmask types and there are no relevant inputs
          to check against.
      
      - vectorizable_store
      
          vect_check_store_rhs already rejects mask/nonmask combinations
          via useless_type_conversion_p.
      
      - vectorizable_reduction
      - vectorizable_lc_phi
      
          PHIs always have nonmask types.  After the change above, attempts
          to combine the PHI result with a mask type would be rejected by
          vectorizable_operation.  (Again, it would be better to handle
          this using pattern stmts.)
      
      - vectorizable_induction
      
          We don't generate inductions for booleans.
      
      - vectorizable_shift
      
          The function already rejects boolean shifts via type_has_mode_precision_p.
      
      - vectorizable_condition
      
          The function already rejects mismatches via useless_type_conversion_p.
      
      - vectorizable_comparison
      
          The function already rejects comparisons between mask and nonmask types.
          The result is always a mask type.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/92596
      	* tree-vect-stmts.c (vectorizable_call): Punt on hybrid mask/nonmask
      	operations.
      	(vectorizable_operation): Likewise, instead of relying on
      	vect_get_mask_type_for_stmt to do this.
      	(vect_get_vector_types_for_stmt): Always return a vector type
      	immediately, rather than deferring the choice for boolean results.
      	Use a vector mask type instead of a normal vector if
      	vect_use_mask_type_p.
      	(vect_get_mask_type_for_stmt): Delete.
      	* tree-vect-loop.c (vect_determine_vf_for_stmt_1): Remove
      	mask_producers argument and special boolean_type_node handling.
      	(vect_determine_vf_for_stmt): Remove mask_producers argument and
      	update calls to vect_determine_vf_for_stmt_1.  Remove doubled call.
      	(vect_determine_vectorization_factor): Update call accordingly.
      	* tree-vect-slp.c (vect_build_slp_tree_1): Remove special
      	boolean_type_node handling.
      	(vect_slp_analyze_node_operations_1): Likewise.
      
      gcc/testsuite/
      	PR tree-optimization/92596
      	* gcc.dg/vect/bb-slp-pr92596.c: New test.
      	* gcc.dg/vect/bb-slp-43.c: Likewise.
      
      From-SVN: r278851
      Richard Sandiford committed
    • Record the vector mask precision in stmt_vec_info · 0c3ea6b3
      search_type_for_mask uses a worklist to search a chain of boolean
      operations for a natural vector mask type.  This patch instead does
      that in vect_determine_stmt_precisions, where we also look for
      overpromoted integer operations.  We then only need to compute
      the precision once and can cache it in the stmt_vec_info.
      
      The new function vect_determine_mask_precision is supposed
      to handle exactly the same cases as search_type_for_mask_1,
      and in the same way.  There's a lot we could improve here,
      but that's not stage 3 material.
      
      I wondered about sharing mask_precision with other fields like
      operation_precision, but in the end that seemed too dangerous.
      We have patterns to convert between boolean and non-boolean
      operations and it would be very easy to get mixed up about
      which case the fields are describing.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vectorizer.h (stmt_vec_info::mask_precision): New field.
      	(vect_use_mask_type_p): New function.
      	* tree-vect-patterns.c (vect_init_pattern_stmt): Copy the
      	mask precision to the pattern statement.
      	(append_pattern_def_seq): Add a scalar_type_for_mask parameter
      	and use it to initialize the new stmt's mask precision.
      	(search_type_for_mask_1): Delete.
      	(search_type_for_mask): Replace with...
      	(integer_type_for_mask): ...this new function.  Use the information
      	cached in the stmt_vec_info.
      	(vect_recog_bool_pattern): Update accordingly.
      	(build_mask_conversion): Pass the scalar type associated with the
      	mask type to append_pattern_def_seq.
      	(vect_recog_mask_conversion_pattern): Likewise.  Call
      	integer_type_for_mask instead of search_type_for_mask.
      	(vect_convert_mask_for_vectype): Call integer_type_for_mask instead
      	of search_type_for_mask.
      	(possible_vector_mask_operation_p): New function.
      	(vect_determine_mask_precision): Likewise.
      	(vect_determine_stmt_precisions): Call it.
      
      From-SVN: r278850
      Richard Sandiford committed
    • Make vect_get_mask_type_for_stmt take a group size · 1c5d68a6
      This patch makes vect_get_mask_type_for_stmt and
      get_mask_type_for_scalar_type take a group size instead of
      the SLP node, so that later patches can call it before an
      SLP node has been built.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vectorizer.h (get_mask_type_for_scalar_type): Replace
      	the slp_tree parameter with a group size parameter.
      	(vect_get_mask_type_for_stmt): Likewise.
      	* tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise.
      	(vect_get_mask_type_for_stmt): Likewise.
      	* tree-vect-slp.c (vect_slp_analyze_node_operations_1): Update
      	call accordingly.
      
      From-SVN: r278849
      Richard Sandiford committed
    • Make vectorizable_operation punt early on codes it doesn't handle · 4177e933
      vectorizable_operation returned false for codes that are handled by
      vectorizable_shift, but only after it had already done a lot of work.
      Checking earlier should be more efficient and avoid polluting the logs
      with duplicate info.
      
      Also, there was no such early-out for comparisons or COND_EXPRs.
      Fixing that avoids a false scan-tree-dump hit with a later patch.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-stmts.c (vectorizable_operation): Punt early
      	on codes that are handled elsewhere.
      
      From-SVN: r278848
      Richard Sandiford committed
    • Improve tree-vect-patterns.c handling of boolean comparisons · ce19a482
      vect_recog_bool_pattern assumed that a comparison between two booleans
      should always become a comparison of vector mask types (implemented as an
      XOR_EXPR).  But if the booleans in question are generated as data values
      (e.g. because they're loaded directly from memory), we should treat them
      like ordinary integers instead, just as we do for boolean logic ops whose
      operands are loaded from memory.  vect_get_mask_type_for_stmt already
      handled this case:
      
            /* We may compare boolean value loaded as vector of integers.
      	 Fix mask_type in such case.  */
            if (mask_type
      	  && !VECTOR_BOOLEAN_TYPE_P (mask_type)
      	  && gimple_code (stmt) == GIMPLE_ASSIGN
      	  && TREE_CODE_CLASS (gimple_assign_rhs_code (stmt)) == tcc_comparison)
      	mask_type = truth_type_for (mask_type);
      
      and not handling it here complicated later patches.
      
      The initial list of targets for vect_bool_cmp is deliberately conservative.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* doc/sourcebuild.texi (vect_bool_cmp): Document.
      	* tree-vect-patterns.c (search_type_for_mask_1): If neither
      	operand to a boolean comparison is a natural vector mask,
      	handle both operands like normal integers instead.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-bool-cmp-2.c: New test.
      	* lib/target-supports.exp (check_effective_target_vect_bool_cmp): New
      	effective target procedure.
      
      From-SVN: r278847
      Richard Sandiford committed
    • libstdc++:: improve how pretty printers find node types (PR 91997) · 9d50a6a7
      This fixes two related problems.
      
      The iterators for node-based containers use nested typedefs such as
      std::list<T>::iterator::_Node to denote their node types. As reported in
      https://bugzilla.redhat.com/show_bug.cgi?id=1053438 those typedefs are
      not always present in the debug info. That means the pretty printers
      cannot find them using gdb.lookup_type (via the find_type helper).
      Instead of looking up the nested typedefs this patch makes the printers
      look up the actual class templates directly.
      
      A related problem (and the original topic of PR 91997) is that GDB fails
      to find types via gdb.lookup_type when printing a backtrace from a
      non-C++ functiion: https://sourceware.org/bugzilla/show_bug.cgi?id=25234
      That is also solved by not looking up the nested typedef.
      
      	PR libstdc++/91997
      	* python/libstdcxx/v6/printers.py (find_type): Fail more gracefully
      	if we run out of base classes to look at.
      	(llokup_templ_spec, lookup_node_type): New utilities to find node
      	types for node-based containers.
      	(StdListPrinter.children, NodeIteratorPrinter.__init__)
      	(NodeIteratorPrinter.to_string, StdSlistPrinter.children)
      	(StdSlistIteratorPrinter.to_string, StdRbtreeIteratorPrinter.__init__)
      	(StdMapPrinter.children, StdSetPrinter.children)
      	(StdForwardListPrinter.children): Use lookup_node_type instead of
      	find_type.
      	(StdListIteratorPrinter.__init__, StdFwdListIteratorPrinter.__init__):
      	Pass name of node type to NodeIteratorPrinter constructor.
      	(Tr1HashtableIterator.__init__): Rename argument.
      	(StdHashtableIterator.__init__): Likewise. Use lookup_templ_spec
      	instead of find_type.
      	* testsuite/libstdc++-prettyprinters/59161.cc: Remove workaround for
      	_Node typedef not being present in debuginfo.
      	* testsuite/libstdc++-prettyprinters/91997.cc: New test.
      
      From-SVN: r278846
      Jonathan Wakely committed
    • Fortran] OpenACC – permit common blocks in some clauses · 9909a059
              * testsuite/libgomp.oacc-fortran/declare-5.f90: Extend by
              adding a common-block test case.
      
      From-SVN: r278845
      Tobias Burnus committed
    • tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Bail out early for too large objects. · fb08a53b
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Bail
      	out early for too large objects.
      
      From-SVN: r278844
      Richard Biener committed
    • Fortran] OpenACC – permit common blocks in some clauses · af814dfa
              * fortran.dg/goacc/common-block-3.f90: Check that unused common-block
              variables do not get mapped.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      
      From-SVN: r278843
      Tobias Burnus committed
    • Add an x86_64 test for PR 92476 · e1b58033
      2019-11-29  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/92476
              * g++.dg/lto/pr92476_[01].C: New test.
      
      From-SVN: r278842
      Martin Jambor committed
    • ipa-cp: Avoid ICEs when looking at expanded thunks and unoptimized functions · 68188fff
      2019-11-29  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/92476
      	* ipa-cp.c (set_single_call_flag): Set node_calling_single_call in
      	the summary only if the summary exists.
      	(find_more_scalar_values_for_callers_subset): Check node_dead in
      	the summary only if the summary exists.
      	(ipcp_store_bits_results): Ignore nodes without lattices.
      	(ipcp_store_vr_results): Likewise.
      	* cgraphclones.c: Include ipa-fnsummary.h and ipa-prop.h and the
      	header files required by them.
      	(cgraph_node::expand_all_artificial_thunks): Analyze expanded thunks.
      
      From-SVN: r278841
      Martin Jambor committed
    • Don't pass booleans as mask types to simd clones (PR 92710) · 3edaed39
      In this PR we assigned a vector mask type to the result of a comparison
      and then tried to pass that mask type to a simd clone, which expected
      a normal (non-mask) type instead.
      
      This patch simply punts on call arguments that have a mask type.
      A better fix would be to pattern-match the comparison to a COND_EXPR,
      like we would if the comparison was stored to memory, but doing that
      isn't gcc 9 or 10 material.
      
      Note that this doesn't affect x86_64-linux-gnu because the ABI promotes
      bool arguments to ints.
      
      2019-11-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/92710
      	* tree-vect-stmts.c (vectorizable_simd_clone_call): Reject
      	vector mask arguments.
      
      gcc/testsuite/
      	PR tree-optimization/92710
      	* gcc.dg/vect/pr92710.c: New test.
      
      From-SVN: r278839
      Richard Sandiford committed
    • gcc/testsuite/ChangeLog - fix date in date line · 337b04a4
      From-SVN: r278837
      Tobias Burnus committed
    • Fix testcase - was missing -fopenacc · 18279486
              PR ipa/84963
              * gfortran.dg/goacc/pr84963.f90: Use dg-additional-options not
              dg-options as otherwise -fopenacc is not used.
      
      From-SVN: r278836
      Tobias Burnus committed
    • profile-count.c (profile_count::to_cgraph_frequency, [...]): Check for compaibility of counts. · db51f624
      
      	* profile-count.c (profile_count::to_cgraph_frequency,
      	profile_count::to_sreal_scale): Check for compaibility of counts.
      	* profile-count.h (compatible_p): Make public; add checking for
      	global0 versus global types.
      	* cgraph.c (cgraph_node::verify_node): Verify count compatibility.
      
      From-SVN: r278835
      Jan Hubicka committed
    • Testsuite: Turn off vect-epilogue-nomask for slp-rect-3 · 60178a32
      Without epiloque no mask it would only try HI modes, but thanks to the
      epiloques nomask It tries QI mode as well which succeeds.  The xfail
      then generates an xpass since the condition on it checks for HI to SI
      and not QI.
      
      So I disabled the epiloque mask since it seems to violate the conditions
      the test actually wanted to test for.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/vect/slp-reduc-3.c: Turn off epilogue-nomask.
      
      From-SVN: r278834
      Tamar Christina committed
    • re PR tree-optimization/92715 (error: position plus size exceeds size of… · 438d9c4a
      re PR tree-optimization/92715 (error: position plus size exceeds size of referenced object in  ‘bit_field_ref’)
      
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92715
      	* tree-ssa-forwprop.c (simplify_vector_constructor): Bail
      	out for uniform vectors and source vectors with less elements
      	than the destination.
      
      	* gcc.dg/torture/pr92715.c: New testcase.
      
      From-SVN: r278833
      Richard Biener committed
    • re PR c++/60228 (ICE using lambda in #pragma omp declare reduction) · 52702016
      	PR c++/60228
      	* parser.c (cp_parser_omp_declare_reduction_exprs): If
      	processing_template_decl, wrap the combiner or initializer
      	into EXPR_STMT.
      	* decl.c (start_preparsed_function): Don't start a lambda scope
      	for DECL_OMP_DECLARE_REDUCTION_P functions.
      	(finish_function): Don't finish a lambda scope for
      	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
      	them nor cp_genericize them.
      	* mangle.c (decl_mangling_context): Look through
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
      	functions, use tentative linkage, don't keep their bodies with
      	-fkeep-inline-functions and return false at the end.
      
      	* g++.dg/gomp/openmp-simd-2.C: Don't expect bodies for
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      
      	* testsuite/libgomp.c++/udr-20.C: New test.
      	* testsuite/libgomp.c++/udr-21.C: New test.
      
      From-SVN: r278832
      Jakub Jelinek committed
    • re PR c++/60228 (ICE using lambda in #pragma omp declare reduction) · b3f44388
      	PR c++/60228
      	* parser.c (cp_parser_omp_declare_reduction_exprs): If
      	processing_template_decl, wrap the combiner or initializer
      	into EXPR_STMT.
      	* decl.c (start_preparsed_function): Don't start a lambda scope
      	for DECL_OMP_DECLARE_REDUCTION_P functions.
      	(finish_function): Don't finish a lambda scope for
      	DECL_OMP_DECLARE_REDUCTION_P functions, nor cp_fold_function
      	them nor cp_genericize them.
      	* mangle.c (decl_mangling_context): Look through
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      	* semantics.c (expand_or_defer_fn_1): For DECL_OMP_DECLARE_REDUCTION_P
      	functions, use tentative linkage, don't keep their bodies with
      	-fkeep-inline-functions and return false at the end.
      
      	* g++.dg/gomp/openmp-simd-2.C: Don't expect bodies for
      	DECL_OMP_DECLARE_REDUCTION_P functions.
      
      	* testsuite/libgomp.c++/udr-20.C: New test.
      	* testsuite/libgomp.c++/udr-21.C: New test.
      
      From-SVN: r278831
      Jakub Jelinek committed
    • Check for TYPE_NAME in type_with_linkage_p. · efeeda75
      2019-11-29  Martin Liska  <mliska@suse.cz>
      
      	PR lto/91574
      	* ipa-devirt.c (types_same_for_odr): Check for existence
      	of TYPE_NAMEs first.
      2019-11-29  Martin Liska  <mliska@suse.cz>
      
      	PR lto/91574
      	* g++.dg/lto/pr91574_0.C: New test.
      
      From-SVN: r278829
      Martin Liska committed
    • re PR tree-optimization/92704 (ICE: Segmentation fault (in process_bb)) · d5e82c9f
      2019-11-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92704
      	* tree-if-conv.c (combine_blocks): Deal with virtual PHIs
      	in loops performing only loads.
      
      	* gcc.dg/torture/pr92704.c: New testcase.
      
      From-SVN: r278828
      Richard Biener committed
    • Handle C2x attributes in Objective-C. · 34b43828
      When adding the initial support for C2x attributes, I deferred the
      unbounded lookahead support required to support such attributes in
      Objective-C (except for the changes to string literal handling, which
      were the riskier piece of preparation for such lookahead support).
      This patch adds that remaining ObjC support.
      
      For C, the parser continues to work exactly as it did before.  For
      ObjC, however, when checking for whether '[[' starts attributes, it
      lexes however many tokens are needed to check for a matching ']]', but
      in a raw mode that omits all the context-sensitive processing that
      c_lex_with_flags normally does, so that that processing can be done
      later when the right context-sensitive flags are set.  Those tokens
      are saved in a separate raw_tokens vector in the parser, and normal
      c_lex_one_token calls will get tokens from there and perform the
      remaining processing on them, if any tokens are found there, so all
      parsing not using the new interfaces gets the same tokens as it did
      before.  (For C, this raw lexing never occurs and the vector of raw
      tokens is always NULL.)
      
      Bootstrapped with no regressions for x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-parser.c (struct c_parser): Add members raw_tokens and
      	raw_tokens_used.
      	(c_lex_one_token): Add argument raw.  Handle lexing raw tokens and
      	using previously-lexed raw tokens.
      	(c_parser_peek_nth_token_raw)
      	(c_parser_check_balanced_raw_token_sequence): New functions.
      	(c_parser_nth_token_starts_std_attributes): Use
      	c_parser_check_balanced_raw_token_sequence for Objective-C.
      
      gcc/testsuite:
      	* objc.dg/attributes/gnu2x-attr-syntax-1.m: New test.
      
      From-SVN: r278827
      Joseph Myers committed
    • Remove unused decimal floating-point pointer types · 70ce1ab9
      	gcc/
      	* builtin-types.def (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR,
      	BT_DFLOAT128_PTR) Remove.
      	* tree-core.h (TI_DFLOAT32_PTR_TYPE, TI_DFLOAT64_PTR_TYPE,
      	TI_DFLOAT128_PTR_TYPE): Remove.
      	* tree.c (build_common_type_nodes): Remove dfloat32_ptr_type_node,
      	dfloat64_ptr_type_node and dfloat128_ptr_type_node initialisation.
      	* tree.h (dfloat32_ptr_type_node, dfloat64_ptr_type_node,
      	dfloat128_ptr_type_node): Remove macros.
      
      	gcc/jit/
      	* jit-builtins.c (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR, BT_DFLOAT128_PTR):
      	Remove commented-out cases.
      
      Reviewed-by: Joseph Myers <joseph@codesourcery.com>
      
      From-SVN: r278826
      Julian Brown committed
    • Daily bump. · 19f9ca88
      From-SVN: r278825
      GCC Administrator committed
  3. 28 Nov, 2019 5 commits
    • rs6000: Fix formatting of *mov{si,di}_internal.* · 3049ccbb
      
      	* config/rs6000/rs6000.md (*movsi_internal1): Fix formatting.  Improve
      	formatting.
      	(*movdi_internal64): Ditto.
      
      From-SVN: r278822
      Segher Boessenkool committed
    • rs6000: Use memory_operand for all simple {l,st}*brx instructions · 2538ff0d
      We run fwprop before combine, very early even in the case of fwprop1;
      and fwprop1 will change memory addressing to what it considers cheaper.
      After the "common" change, it now changes the indexed store instruction
      in the testcase to be to a constant address.  But that is not an
      improvement at all: the byte reverse instructions only exist in the
      indexed form, so they will not match anymore.
      
      This patch changes the patterns for the byte reverse instructions to
      allow plain memory_operand, letting reload fix this up.
      
      
      	PR target/92602
      	* config/rs6000/rs6000.md (bswap<mode>2_load for HSI): Change the
      	indexed_or_indirect_operand to be memory_operand.
      	(bswap<mode>2_store for HSI): Ditto.
      	(bswapdi2_load): Ditto.
      	(bswapdi2_store): Ditto.
      
      From-SVN: r278821
      Segher Boessenkool committed
    • Translate header for -fdbg-cnt-list. · 03df119d
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR debug/46558
      	* dbgcnt.c (dbg_cnt_list_all_counters): Mark table
      	headers for translation.
      
      From-SVN: r278820
      Martin Liska committed
    • Properly use TYPE_MAIN_VARIANT in warn_types_mismatch. · 2fb2966c
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR lto/92609
      	* ipa-devirt.c (warn_types_mismatch): Use TYPE_MAIN_VARIANT
      	consistently.
      2019-11-28  Martin Liska  <mliska@suse.cz>
      
      	PR lto/92609
      	* g++.dg/lto/pr92609_0.C: New test.
      	* g++.dg/lto/pr92609_1.C: New test.
      
      From-SVN: r278819
      Martin Liska committed
    • [Darwin, X86, testsuite] Update tests for common section use. · 3a95e31b
      The switch to default of no-common means that we no longer
      indirect the accesses to 'xxx' in this test.  Adjust the scan-
      assembler tests to reflect this.
      
      gcc/testsuite/ChangeLog:
      
      2019-11-28  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* gcc.target/i386/pr32219-2.c: Adjust scan-assembler entries
      	for revised common default.
      
      From-SVN: r278818
      Iain Sandoe committed