Skip to content
Snippets Groups Projects
  1. Nov 22, 2022
    • Eric Botcazou's avatar
      Fix wrong array type conversion with different storage orde · 55cb8c5c
      Eric Botcazou authored
      When two arrays of scalars have a different storage order in Ada, the
      front-end makes sure that the conversion is performed component-wise
      so that each component can be reversed.  So it's a little bit counter
      productive that the ldist pass performs the opposite transformation
      and synthesizes a memcpy/memmove in this case.
      
      gcc/
      	* tree-loop-distribution.cc (loop_distribution::classify_builtin_ldst):
      	Bail out if source and destination do not have the same storage order.
      
      gcc/testsuite/
      	* gnat.dg/sso18.adb: New test.
      55cb8c5c
    • Jonathan Wakely's avatar
      libstdc++: Replace std::isdigit and std::isxdigit in <format> [PR107817] · dfc1ea41
      Jonathan Wakely authored
      These functions aren't usable in constant expressions. Provide our own
      implementations, based on __from_chars_alnum_to_val from <charconv>.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/107817
      	* include/std/charconv (__from_chars_alnum_to_val): Add
      	constexpr for C++20.
      	* include/std/format (__is_digit, __is_xdigit): New functions.
      	(_Spec::_S_parse_width_or_precision): Use __is_digit.
      	(__formatter_fp::parse): Use __is_xdigit.
      dfc1ea41
    • Jonathan Wakely's avatar
      libstdc++: Add testcase for fs::path constraint recursion [PR106201] · 6b859736
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/106201
      	* testsuite/27_io/filesystem/iterators/106201.cc: New test.
      6b859736
    • Martin Jambor's avatar
      ipa-sra: Dump edge summaries also for non-candidates · 95489a2a
      Martin Jambor authored
      This should have been part of r12-578-g717d278af93a4a.  Call edge
      summaries provide information required for IPA-SRA transformations in
      the callees but are generated when analyzing callers and thus also
      callers which are not IPA-SRA candidates themselves.  Therefore we
      analyze them but don't dump them, which makes the dumops quite
      incomplete. This patch fixes that.
      
      gcc/ChangeLog:
      
      2021-12-14  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-sra.cc (ipa_sra_dump_all_summaries): Dump edge summaries even
      	for non-candidates.
      95489a2a
    • Martin Jambor's avatar
      ipa-cp: Do not consider useless aggregate constants · feeb0d68
      Martin Jambor authored
      When building vectors of known aggregate values, there is no point in
      including those for parameters which are not used in any way
      whatsoever.  This patch avoids that together with also other kinds of
      constants.
      
      gcc/ChangeLog:
      
      2022-11-13  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-cp.cc (push_agg_values_from_edge): Do not consider constants
      	in unused aggregate parameters.
      feeb0d68
    • Martin Jambor's avatar
      ipa: IPA-SRA split detection simplification · c826a041
      Martin Jambor authored
      I have noticed that the flag m_split_modifications_p of
      ipa_param_body_adjustments is not really necessary as it has to
      correspond to whether m_replacements is non-empty so this patches
      removes it.  This also simplifies a bit some patches I work on.
      
      gcc/ChangeLog:
      
      2022-11-10  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-param-manipulation.h (ipa_param_body_adjustments): Removed
      	member m_split_modifications_p.
      	* ipa-param-manipulation.cc
      	(ipa_param_body_adjustments::common_initialization): Do not set
      	m_split_modifications_p.
      	(ipa_param_body_adjustments::ipa_param_body_adjustments): Remove
      	initializations of m_split_modifications_p.
      	(ipa_param_body_adjustments::modify_call_stmt): Check that
      	m_replacements is empty instead of m_split_modifications_p.
      c826a041
    • Martin Jambor's avatar
      ipa-cp: Do not be too optimistic about self-recursive edges (PR 107661) · c4a92a91
      Martin Jambor authored
      PR 107661 shows that function push_agg_values_for_index_from_edge
      should not attempt to optimize self-recursive call graph edges when
      called from cgraph_edge_brings_all_agg_vals_for_node.  Unlike when
      being called from find_aggregate_values_for_callers_subset, we cannot
      expect that any cloning for constants would lead to the edge leading
      from a new clone to the same new clone, in this case it would only be
      redirected to a new callee.
      
      Fixed by adding a parameter to push_agg_values_from_edge whether being
      optimistic about self-recursive edges is possible.
      
      gcc/ChangeLog:
      
      2022-11-22  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/107661
      	* ipa-cp.cc (push_agg_values_from_edge): New parameter
      	optimize_self_recursion, use it to decide whether to pass interim to
      	the helper function.
      	(find_aggregate_values_for_callers_subset): Pass true in the new
      	parameter of push_agg_values_from_edge.
      	(cgraph_edge_brings_all_agg_vals_for_node): Pass false in the new
      	parameter of push_agg_values_from_edge.
      
      gcc/testsuite/ChangeLog:
      
      2022-11-22  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/107661
      	* g++.dg/ipa/pr107661.C: New test.
      c4a92a91
    • Tobias Burnus's avatar
      gcn: Add __builtin_gcn_{get_stack_limit,first_call_this_thread_p} · d6bbca7b
      Tobias Burnus authored
      
      The new builtins have been added for newlib to reduce dependency on
      compiler-internal implementation choices of GCC in newlibs' getreent.c.
      
      gcc/ChangeLog:
      
      	* config/gcn/gcn-builtins.def (FIRST_CALL_THIS_THREAD_P,
      	GET_STACK_LIMIT): Add new builtins.
      	* config/gcn/gcn.cc (gcn_expand_builtin_1): Expand them.
      	* config/gcn/gcn.md (prologue_use): Add "register_operand" as
      	arg to match_operand.
      	(prologue_use_di): New; DI insn_and_split variant of the former.
      
      Co-Authored-By: default avatarAndrew Stubbs <ams@codesourcery.com>
      d6bbca7b
    • Jason Merrill's avatar
      c++: don't use strchrnul [PR107781] · ac505414
      Jason Merrill authored
      The contracts implementation was using strchrnul, which is a glibc
      extension, so bootstrap broke on non-glibc targets.  Use C89 strcspn
      instead.
      
      	PR c++/107781
      
      gcc/cp/ChangeLog:
      
      	* contracts.cc (role_name_equal): Use strcspn instead
      	of strchrnul.
      ac505414
    • Christophe Lyon's avatar
      aarch64: Fix test_dfp_17.c for big-endian [PR 107604] · 4eb3a486
      Christophe Lyon authored
      gcc.target/aarch64/aapcs64/test_dfp_17.c has been failing on
      big-endian, because the _Decimal32 on-stack argument is not padded in
      the same direction depending on endianness.
      
      This patch fixes the testcase so that it expects the argument in the
      right stack location, similarly to what other tests do in the same
      directory.
      
      gcc/testsuite/ChangeLog:
      
      	PR target/107604
      	* gcc.target/aarch64/aapcs64/test_dfp_17.c: Fix for big-endian.
      4eb3a486
    • Piotr Trojanek's avatar
      ada: Accept aspects Global and Depends on abstract subprograms · 61351ab9
      Piotr Trojanek authored
      Aspects Global and Depends are now allowed on abstract subprograms
      (as substitutes for Global'Class and Depends'Class).
      
      This patch implements the recently modified rules SPARK RM 6.1.2(2-3).
      The behavior for Contract_Cases and aspects on null subprograms stays
      as it was.
      
      gcc/ada/
      
      	* sem_prag.adb (Analyze_Depends_Global): Accept aspects on
      	abstract subprograms.
      61351ab9
    • Ghjuvan Lacambre's avatar
      ada: Disable checking of Elab_Spec procedures in CodePeer_Mode · 05894d1c
      Ghjuvan Lacambre authored
      This commit re-enables the Validate_Subprogram_Calls check that had been
      disabled in a previous commit and has said check skip over Elab_Spec
      procedures in CodePeer_Mode.
      
      gcc/ada/
      
      	* frontend.adb (Frontend): Re-enable Validate_Subprogram_Calls.
      	* exp_ch6.adb (Check_BIP_Actuals): When in CodePeer mode, do not
      	attempt to validate procedures coming from an
      	Elab_Spec/Elab_Body/Elab_Subp_Body procedure.
      05894d1c
    • Piotr Trojanek's avatar
      ada: Adjust number of errors when removing warning in dead code · 29b7e005
      Piotr Trojanek authored
      When a warning about a runtime exception is emitted for a code in
      generic instance, we add continuation warnings "in instantiation ..."
      and only the original message increase the total number of errors.
      
      When removing these messages, e.g. after detecting that the code inside
      generic instance is dead, we must decrease the total number of errors,
      as otherwise the compiler exit status might stop gnatmake or gprbuild.
      
      gcc/ada/
      
      	* errout.adb (To_Be_Removed): Decrease total number of errors when
      	removing a warning that has been escalated into error.
      	* erroutc.adb (dmsg): Print Warn_Runtime_Raise flag.
      29b7e005
    • Eric Botcazou's avatar
      ada: Fix formatting glitches in Make_Tag_Assignment · 3b5f3138
      Eric Botcazou authored
      gcc/ada/
      
      	* exp_ch3.adb (Make_Tag_Assignment): Fix formatting glitches.
      3b5f3138
    • Eric Botcazou's avatar
      ada: Fix recent assertion failure on GPR2 · cd4b47a9
      Eric Botcazou authored
      It's the compiler trying to load the nonexistent body of a generic package
      when trying to inline a call to an expression function of this package that
      has a pre or post-condition (hence the need for -gnata to trigger the ICE).
      
      gcc/ada/
      
      	* contracts.adb (Build_Subprogram_Contract_Wrapper): Do not fiddle
      	with the Was_Expression_Function flag. Move a few lines around.
      cd4b47a9
    • Richard Biener's avatar
      tree-optimization/107803 - abnormal cleanup from the SSA propagator · e4faee8d
      Richard Biener authored
      The SSA propagator is missing abnormal cleanup which shows in a
      sanity check in the uninit engine (and missed CFG verification).
      The following adds that.
      
      	PR tree-optimization/107803
      	* tree-ssa-propagate.cc (substitute_and_fold_dom_walker): Add
      	need_ab_cleanup member.
      	(substitute_and_fold_dom_walker::before_dom_children): When
      	a stmt can no longer transfer control flow abnormally set
      	need_ab_cleanup.
      	(substitute_and_fold_engine::substitute_and_fold): Cleanup
      	abnormal control flow.
      
      	* g++.dg/pr107803.C: New testcase.
      e4faee8d
    • Jonathan Wakely's avatar
      libstdc++: Fix pool resource build errors for H8 [PR107801] · 0f9659e7
      Jonathan Wakely authored
      The array of pool sizes was previously adjusted to work for msp430-elf
      which has 16-bit int and either 16-bit size_t or 20-bit size_t. The
      largest pool sizes were disabled unless size_t has more than 20 bits.
      
      The H8 family has 16-bit int but 32-bit size_t, which means that the
      largest sizes are enabled, but 1<<15 produces a negative number that
      then cannot be narrowed to size_t.
      
      Replace the test for 32-bit size_t with a test for 32-bit int, which
      means we won't use the 4kiB to 4MiB pools for targets with 16-bit int
      even if they have a wider size_t.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/107801
      	* src/c++17/memory_resource.cc (pool_sizes): Disable large pools
      	for targets with 16-bit int.
      0f9659e7
    • Richard Biener's avatar
      tree-optimization/107672 - avoid vector mode type_for_mode call · 09b7993a
      Richard Biener authored
      The following avoids using type_for_mode on vector modes which might
      not work for all frontends.  Instead we look for the inner mode
      type and use build_vector_type_for_mode instead.
      
      	PR tree-optimization/107672
      	* tree-vect-stmts.cc (supportable_widening_operation): Avoid
      	type_for_mode on vector modes.
      09b7993a
    • Richard Biener's avatar
      tree-optimization/107766 - ICE with recent -ffp-contract=off fix · 1a06ae6f
      Richard Biener authored
      The following uses *node to check for FP types rather than the
      child nodes which could be constant leafs and thus without a
      vector type.
      
      	PR tree-optimization/107766
      	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches):
      	Use *node to check for FP vector types.
      
      	* g++.dg/vect/pr107766.cc: New testcase.
      1a06ae6f
    • liuhongt's avatar
      Guard 64/32-bit vector move patterns with ix86_hard_reg_move_ok. · d5fce9f6
      liuhongt authored
      gcc/ChangeLog:
      
      	* config/i386/mmx.md (*mov<mode>_internal): Add
      	ix86_hard_reg_move_ok to condition.
      d5fce9f6
    • liuhongt's avatar
      Some tidy up for RA related hooks. · 826c22df
      liuhongt authored
      1. We also need to guard size of TO to be
      less than TARGET_SSE2 ? 2 : 4 in ix86_can_change_mode_class.
      2. Merge VALID_AVX512FP16_SCALAR_MODE plus BFmode
      into VALID_AVX512F_SCALAR_MODE since we've support 16-bit data move
      above SSE2, so no need for the condition of AVX512FP16 for those evex
      sse registers.
      3. Allocate DI/HImode to sse register for SSE2 above just like
      SImode since we've supported 16-bit data move between sse and gpr
      above SSE2, this will help RA to handle cases like (subreg:HI (reg:V8HI)
      0) or else RA will spill it. This enable optimization for
      pices-memset-{3,37,39}.c
      
      gcc/ChangeLog:
      
      	* config/i386/i386.cc (ix86_can_change_mode_class): Also guard
      	size of TO.
      	(ix86_hard_regno_mode_ok): Remove VALID_AVX512FP16_SCALAR_MODE
      	* config/i386/i386.h (VALID_AVX512FP16_SCALAR_MODE): Merged to
      	..
      	(VALID_AVX512F_SCALAR_MODE): .. this, also add HImode.
      	(VALID_SSE_REG_MODE): Add DI/HImode.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/i386/pieces-memset-3.c: Remove xfail.
      	* gcc.target/i386/pieces-memset-37.c: Remove xfail.
      	* gcc.target/i386/pieces-memset-39.c: Remove xfail.
      826c22df
    • Jason Merrill's avatar
      c++: contracts fixes · b20a3854
      Jason Merrill authored
      Fixing -Wunused-parm warnings and link errors depending on where -fcontracts
      appears on the command line.
      
      gcc/cp/ChangeLog:
      
      	* contracts.cc (build_contract_condition_function):
      	Set DECL_ARTIFICIAL on return value parm.
      	* g++spec.cc (lang_specific_driver): Add -lstdc++exp
      	just before -lstdc++.
      b20a3854
    • GCC Administrator's avatar
      Daily bump. · 8b7fee1d
      GCC Administrator authored
      8b7fee1d
    • David Malcolm's avatar
      analyzer: fix ICE on 'bind' that returns a struct [PR107788] · 4e4e45a4
      David Malcolm authored
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/107788
      	* region-model.cc (region_model::update_for_int_cst_return):
      	Require that the return type be an integer type.
      	(region_model::update_for_nonzero_return): Likewise.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/107788
      	* g++.dg/analyzer/fd-bind-pr107783.C: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      4e4e45a4
    • David Malcolm's avatar
      analyzer: fix ICE on 'bind' with non-pointer arg [P107783] · 12a4785c
      David Malcolm authored
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/107783
      	* region-model-impl-calls.cc (kf_accept::matches_call_types_p):
      	Require that args 1 and 2 be pointers.
      	(kf_bind::matches_call_types_p): Require that arg 1 be a pointer.
      	* region-model.h (call_details::arg_is_pointer_p): New
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/107783
      	* gcc.dg/analyzer/fd-bind-pr107783.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      12a4785c
    • David Malcolm's avatar
      analyzer: fix ICE on writes to errno [PR107777] · 358dab90
      David Malcolm authored
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/107777
      	* call-summary.cc
      	(call_summary_replay::convert_region_from_summary_1): Handle
      	RK_THREAD_LOCAL and RK_ERRNO in switch.
      	* region-model.cc (region_model::get_representative_path_var_1):
      	Likewise.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/107777
      	* gcc.dg/analyzer/call-summaries-errno.c: New test.
      	* gcc.dg/analyzer/errno-pr107777.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      358dab90
    • David Malcolm's avatar
      analyzer, testsuite: add more examples taken from CWE · 9ada4596
      David Malcolm authored
      
      gcc/testsuite/ChangeLog:
      	* gcc.dg/analyzer/CWE-131-examples.c: New test.
      	* gcc.dg/analyzer/file-CWE-1341-example.c: New test.
      	* gcc.dg/analyzer/malloc-CWE-401-example.c: New test.
      	* gcc.dg/analyzer/malloc-CWE-415-examples.c: New test.
      	* gcc.dg/analyzer/malloc-CWE-416-examples.c: New test.
      	* gcc.dg/analyzer/malloc-CWE-590-examples.c: New test.
      
      Signed-off-by: default avatarDavid Malcolm <dmalcolm@redhat.com>
      9ada4596
  2. Nov 21, 2022
    • Lewis Hyatt's avatar
      libcpp: Fix paste error with unknown pragma after macro expansion · 6f46d14d
      Lewis Hyatt authored
      In directives.cc, do_pragma() contains logic to handle a case such as the new
      testcase pragma-omp-unknown.c, where an unknown pragma was the result of macro
      expansion (for pragma namespaces that permit expansion). This no longer works
      correctly as shown by the testcase, fixed by adding PREV_WHITE to the flags on
      the second token to prevent an unwanted paste.  Also fixed the memory leak,
      since the temporary tokens are pushed on their own context, nothing prevents
      freeing of the buffer that holds them when the context is eventually popped.
      
      libcpp/ChangeLog:
      
      	* directives.cc (do_pragma): Fix memory leak in token buffer.  Fix
      	unwanted paste between two tokens.
      
      gcc/testsuite/ChangeLog:
      
      	* c-c++-common/gomp/pragma-omp-unknown.c: New test.
      6f46d14d
    • Sebastian Huber's avatar
      RTEMS: Use local-exec TLS model by default · 5c0d171f
      Sebastian Huber authored
      gcc/ChangeLog:
      
      	* config/rtems.h (SUBTARGET_CC1_SPEC): Undef and define.
      5c0d171f
    • Sebastian Huber's avatar
      Allow subtarget customization of CC1_SPEC · 58c3d9cd
      Sebastian Huber authored
      gcc/ChangeLog:
      
      	* gcc.cc (SUBTARGET_CC1_SPEC): Define if not defined.
      	(cc1_spec): Append SUBTARGET_CC1_SPEC.
      58c3d9cd
    • Jonathan Wakely's avatar
      libstdc++: Reduce size of std::bind_front(F) result · cbd05ca5
      Jonathan Wakely authored
      When there are no bound arguments to a std::bind_front call we don't
      need the overhead of compiling, initializing, and accessing an empty
      tuple.
      
      libstdc++-v3/ChangeLog:
      
      	* include/std/functional (_Bind_front0): New class template.
      	(_Bind_front_t): Use _Bind_front0 when there are no bound
      	arguments.
      	* testsuite/20_util/function_objects/bind_front/107784.cc:
      	New test.
      cbd05ca5
    • Jonathan Wakely's avatar
      libstdc++: Check static assertions earlier in chrono::duration · ed77dcb9
      Jonathan Wakely authored
      This ensures that we fail a static assertion before giving any other
      errors. Instantiating chrono::duration<int, chrono::seconds> will now
      print this before the other errors caused by it:
      
      error: static assertion failed: period must be a specialization of ratio
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/chrono.h (duration): Check preconditions on
      	template arguments before using them.
      ed77dcb9
    • Jonathan Wakely's avatar
      libstdc++: Improve Doxygen comments in <tuple> · 94f7baf2
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/std/tuple: Add better Doxygen comments.
      94f7baf2
    • Dimitar Dimitrov's avatar
      testsuite: Add filter for target socket support · 9fe9dd24
      Dimitar Dimitrov authored
      
      The new analyzer tests for sockets are failing on embedded targets.
      The newlib and avr-libc C libraries do not support sockets.
      
      Testing done:
        - No changes in gcc.sum for x86_64-pc-linux-gnu, with or without this
          patch.
        - Filtered cases are now UNSUPPORTED instead of failing on AVR and PRU
          backends.
      
      gcc/ChangeLog:
      
      	* doc/sourcebuild.texi (sockets): Document new check.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/analyzer/fd-accept.c: Require sockets.
      	* gcc.dg/analyzer/fd-bind.c: Ditto.
      	* gcc.dg/analyzer/fd-connect.c: Ditto.
      	* gcc.dg/analyzer/fd-datagram-socket.c: Ditto.
      	* gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c:
      	Ditto.
      	* gcc.dg/analyzer/fd-glibc-byte-stream-socket.c: Ditto.
      	* gcc.dg/analyzer/fd-glibc-datagram-client.c: Ditto.
      	* gcc.dg/analyzer/fd-glibc-datagram-socket.c: Ditto.
      	* gcc.dg/analyzer/fd-listen.c: Ditto.
      	* gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c: Ditto.
      	* gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c: Ditto.
      	* gcc.dg/analyzer/fd-socket-meaning.c: Ditto.
      	* gcc.dg/analyzer/fd-socket-misuse.c: Ditto.
      	* gcc.dg/analyzer/fd-stream-socket-active-open.c: Ditto.
      	* gcc.dg/analyzer/fd-stream-socket-passive-open.c: Ditto.
      	* gcc.dg/analyzer/fd-stream-socket.c: Ditto.
      	* gcc.dg/analyzer/fd-symbolic-socket.c: Ditto.
      	* lib/target-supports.exp (check_effective_target_sockets): New
      	check.
      
      Signed-off-by: default avatarDimitar Dimitrov <dimitar@dinux.eu>
      9fe9dd24
    • Andrew Carlotti's avatar
      Expand comment for tree_niter_desc.max · f80bfdcc
      Andrew Carlotti authored
      This requirement is enforced by a gcc_checking_assert in
      record_estimate.
      
      gcc/ChangeLog:
      
      	* tree-ssa-loop.h (tree_niter_desc): Update comment.
      f80bfdcc
    • Andrew Carlotti's avatar
      Modify test, to prevent the next patch breaking it · 2aec4088
      Andrew Carlotti authored
      The upcoming c[lt]z idiom recognition patch eliminates the need for a
      brute force computation of the iteration count of these loops. The test
      is intended to verify that ivcanon can determine the loop count when the
      condition is given by a chain of constant computations.
      
      We replace the constant operations with a more complicated chain that should
      resist future idiom recognition.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/pr77975.c: Make tests more robust.
      2aec4088
    • Andrew Carlotti's avatar
      Refactor number_of_iterations_popcount · eea52e38
      Andrew Carlotti authored
      This includes various changes to improve clarity, and to enable the code
      to be more similar to the clz and ctz idiom recognition added in
      subsequent patches.
      
      We create new number_of_iterations_bitcount function, which will be used
      to call the other bit-counting recognition functions added in subsequent
      patches, as well as a generic comment describing the loop structures
      that are common to each idiom. Some of the variables in
      number_of_iterations_popcount are given more descriptive names, and the
      popcount expression builder is extracted into a separate function.
      
      As part of the refactoring, we also fix a bug where the max loop count
      for modes shorter than an integer would be incorrectly computed as if
      the input mode were actually an integer.
      
      We also ensure that niter->max takes into account the final value for
      niter->niter (after any folding and simplifying), since if the latter is a
      constant, then record_estimate mandates that the two values are equivalent.
      
      gcc/ChangeLog:
      
      	* tree-ssa-loop-niter.cc
      	(number_of_iterations_exit_assumptions): Modify to call...
      	(number_of_iterations_bitcount): ...this new function.
      	(number_of_iterations_popcount): Now called by the above.
      	Refactor, and extract popcount expression builder to...
      	(build_popcount_expr): this new function.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/tree-ssa/popcount-max.c: New test.
      eea52e38
    • Andrew Carlotti's avatar
      Remove prototype for number_of_iterations_popcount · fe985a23
      Andrew Carlotti authored
      gcc/ChangeLog:
      
      	* tree-ssa-loop-niter.cc (ssa_defined_by_minus_one_stmt_p): Move
      	(number_of_iterations_popcount): Move, and remove separate prototype.
      fe985a23
    • Andrew Carlotti's avatar
      Ensure at_stmt is defined before an early exit · f0e4f676
      Andrew Carlotti authored
      This prevents a null dereference error when outputing debug information
      following an early exit from number_of_iterations_exit_assumptions.
      
      gcc/ChangeLog:
      
      	* tree-ssa-loop-niter.cc (number_of_iterations_exit_assumptions):
      	Move at_stmt assignment.
      f0e4f676
    • Torbjörn SVENSSON's avatar
      testsuite: Windows paths use \ and not / · 9df85f33
      Torbjörn SVENSSON authored
      
      Without this patch, the following error is reported on Windows:
      
      In file included from t:\build\arm-none-eabi\include\c++\11.3.1\string:54,
                        from t:\build\arm-none-eabi\include\c++\11.3.1\bits\locale_classes.h:40,
                        from t:\build\arm-none-eabi\include\c++\11.3.1\bits\ios_base.h:41,
                        from t:\build\arm-none-eabi\include\c++\11.3.1\ios:42,
                        from t:\build\arm-none-eabi\include\c++\11.3.1\ostream:38,
                        from t:\build\arm-none-eabi\include\c++\11.3.1\iostream:39:
      t:\build\arm-none-eabi\include\c++\11.3.1\bits\range_access.h:36:10: note: include 't:\build\arm-none-eabi\include\c++\11.3.1\initializer_list' translated to import
      arm-none-eabi-g++.exe: warning: .../gcc/testsuite/g++.dg/modules/pr99023_b.X: linker input file unused because linking not done
      FAIL: g++.dg/modules/pr99023_b.X -std=c++2a  dg-regexp 6 not found: "[^\n]*: note: include '[^\n]*/initializer_list' translated to import\n"
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/modules/pr99023_b.X: Match Windows paths too.
      
      Co-Authored-By: default avatarYvan ROUX <yvan.roux@foss.st.com>
      Signed-off-by: default avatarTorbjörn SVENSSON <torbjorn.svensson@foss.st.com>
      9df85f33
Loading