- Nov 22, 2022
-
-
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.
-
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.
-
Jonathan Wakely authored
libstdc++-v3/ChangeLog: PR libstdc++/106201 * testsuite/27_io/filesystem/iterators/106201.cc: New test.
-
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.
-
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.
-
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.
-
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.
-
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:
Andrew Stubbs <ams@codesourcery.com>
-
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.
-
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.
-
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.
-
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.
-
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.
-
Eric Botcazou authored
gcc/ada/ * exp_ch3.adb (Make_Tag_Assignment): Fix formatting glitches.
-
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.
-
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.
-
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.
-
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.
-
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.
-
liuhongt authored
gcc/ChangeLog: * config/i386/mmx.md (*mov<mode>_internal): Add ix86_hard_reg_move_ok to condition.
-
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.
-
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++.
-
GCC Administrator authored
-
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:
David Malcolm <dmalcolm@redhat.com>
-
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:
David Malcolm <dmalcolm@redhat.com>
-
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:
David Malcolm <dmalcolm@redhat.com>
-
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:
David Malcolm <dmalcolm@redhat.com>
-
- Nov 21, 2022
-
-
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.
-
Sebastian Huber authored
gcc/ChangeLog: * config/rtems.h (SUBTARGET_CC1_SPEC): Undef and define.
-
Sebastian Huber authored
gcc/ChangeLog: * gcc.cc (SUBTARGET_CC1_SPEC): Define if not defined. (cc1_spec): Append SUBTARGET_CC1_SPEC.
-
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.
-
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.
-
Jonathan Wakely authored
libstdc++-v3/ChangeLog: * include/std/tuple: Add better Doxygen comments.
-
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:
Dimitar Dimitrov <dimitar@dinux.eu>
-
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.
-
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.
-
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.
-
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.
-
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.
-
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:
Yvan ROUX <yvan.roux@foss.st.com> Signed-off-by:
Torbjörn SVENSSON <torbjorn.svensson@foss.st.com>
-