- Mar 29, 2022
-
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> libgomp/ChangeLog: * configure.tgt: Add LoongArch triplet.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> libgcc/ChangeLog: * configure: Regenerate file.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> libgcc/ChangeLog: * config/loongarch/crtfastmath.c: New file. * config/loongarch/linux-unwind.h: Like wise. * config/loongarch/sfp-machine.h: Like wise. * config/loongarch/t-crtstuff: Like wise. * config/loongarch/t-loongarch: Like wise. * config/loongarch/t-loongarch64: Like wise. * config/loongarch/t-softfp-tf: Like wise. * config.host: Add LoongArch tuples. * configure.ac: Add LoongArch support.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * config/loongarch/loongarch-c.cc
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * config/loongarch/larchintrin.h: New file. * config/loongarch/loongarch-builtins.cc: New file.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * config/host-linux.cc: Add LoongArch support. * config/loongarch/loongarch-protos.h: New file. * config/loongarch/loongarch-tune.h: Likewise. * config/loongarch/loongarch.cc: Likewise. * config/loongarch/loongarch.h: Likewise.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * config/loongarch/constraints.md: New file. * config/loongarch/generic.md: New file. * config/loongarch/la464.md: New file. * config/loongarch/loongarch-ftypes.def: New file. * config/loongarch/loongarch-modes.def: New file. * config/loongarch/loongarch.md: New file. * config/loongarch/predicates.md: New file. * config/loongarch/sync.md: New file.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * configure: Regenerate file.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * common/config/loongarch/loongarch-common.cc: New file. * config/loongarch/genopts/genstr.sh: New file. * config/loongarch/genopts/loongarch-strings: New file. * config/loongarch/genopts/loongarch.opt.in: New file. * config/loongarch/loongarch-str.h: New file. * config/loongarch/gnu-user.h: New file. * config/loongarch/linux.h: New file. * config/loongarch/loongarch-cpu.cc: New file. * config/loongarch/loongarch-cpu.h: New file. * config/loongarch/loongarch-def.c: New file. * config/loongarch/loongarch-def.h: New file. * config/loongarch/loongarch-driver.cc: New file. * config/loongarch/loongarch-driver.h: New file. * config/loongarch/loongarch-opts.cc: New file. * config/loongarch/loongarch-opts.h: New file. * config/loongarch/loongarch.opt: New file. * config/loongarch/t-linux: New file. * config/loongarch/t-loongarch: New file. * config.gcc: Add LoongArch support. * configure.ac: Add LoongArch support. contrib/ChangeLog: * gcc_update (files_and_dependencies): Add config/loongarch/loongarch.opt and config/loongarch/loongarch-str.h.
-
chenglulu authored
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> ChangeLog: * configure.ac: Add LoongArch tuples. * configure: Regenerate. config/ChangeLog: * picflag.m4: Default add build option '-fpic' for LoongArch.
-
Thomas Schwinge authored
Originally introduced almost ten years ago in r193303/commit 0829c7f7 "optc-gen.awk: Factor code out to...". gcc/ * opt-functions.awk (lang_enabled_by): Fix 'enabledby_negargs' typo.
-
Jonathan Wakely authored
Once we no longer care about older compilers without this feature, we can drop these static data members, so the names don't have to be visible at class scope. libstdc++-v3/ChangeLog: * libsupc++/compare (_Strong_order) [!__cpp_using_enum]: Add static data members for _Fp_fmt enumerators.
-
Jonathan Wakely authored
The conditions that guard the feature test macros in <version> should match the main definitions of the macros in other headers. This doesn't matter for GCC, because it supports all the conditions being tested here, but it does matter for non-GCC compilers without the relevant C++20 features. libstdc++-v3/ChangeLog: * include/std/version (__cpp_lib_variant): Fix conditions to match <variant>. (__cpp_lib_expected): Fix condition to match <expected>.
-
Marc Poulhiès authored
Test must check for effective support of fpic. gcc/testsuite/ChangeLog: * gcc.target/i386/pr103275.c: Add missing dg-require-effective-target for checking fpic.
-
Marc Poulhiès authored
On targets that do not have MXX/SSE enabled by default, pr97521 and pr96713 fail because they emit warnings: pr97521.c:12:1: warning: MMX vector return without MMX enabled changes the ABI [-Wpsabi] pr97521.c:11:1: note: the ABI for passing parameters with 16-byte alignment has changed in GCC 4.6 pr97521.c:11:1: warning: SSE vector argument without SSE enabled changes the ABI [-Wpsabi] Add -Wno-psabi to dg-options. gcc/testsuite/ChangeLog: * gcc.target/i386/pr97521.c: Add -Wno-psabi to dg-options. * gcc.dg/analyzer/pr96713.c: Likewise.
-
Richard Biener authored
When doing format diagnostics at -O0 we should make sure to make SCEV available to avoid false positives due to ranges we otherwise can trivially compute. 2022-03-28 Richard Biener <rguenther@suse.de> PR tree-optimization/105080 * tree-ssa-strlen.cc (printf_strlen_execute): Always init loops and SCEV. * gcc.dg/pr105080.c: New testcase.
-
David Malcolm authored
PR analyzer/105087 describes a false positive from -Wanalyzer-double-free in which the analyzer erroneously considers two successive inlined vasprintf calls to have allocated the same pointer. The root cause is that the result written back from vasprintf is a conjured_svalue, and that we normally purge state when reusing a conjured_svalue, but various places in the code were calling region_model_manager::get_or_create_conjured_svalue but failing to then call region_model::purge_state_involving on the result. This patch fixes things by moving responsibility for calling region_model::purge_state_involving into region_model_manager::get_or_create_conjured_svalue, so that it is always called when reusing a conjured_svalue, fixing the false positive. gcc/analyzer/ChangeLog: PR analyzer/105087 * analyzer.h (class conjured_purge): New forward decl. * region-model-asm.cc (region_model::on_asm_stmt): Add conjured_purge param to calls binding_cluster::on_asm and region_model_manager::get_or_create_conjured_svalue. * region-model-impl-calls.cc (call_details::get_or_create_conjured_svalue): Likewise for call to region_model_manager::get_or_create_conjured_svalue. (region_model::impl_call_fgets): Remove call to region_model::purge_state_involving, as this is now done implicitly by call_details::get_or_create_conjured_svalue. (region_model::impl_call_fread): Likewise. (region_model::impl_call_strchr): Pass conjured_purge param to call to region_model_manager::get_or_create_conjured_svalue. * region-model-manager.cc (conjured_purge::purge): New. (region_model_manager::get_or_create_conjured_svalue): Add param "p". Use it to purge state when reusing an existing conjured_svalue. * region-model.cc (region_model::on_call_pre): Replace call to region_model::purge_state_involving with passing conjured_purge to region_model_manager::get_or_create_conjured_svalue. (region_model::handle_unrecognized_call): Pass conjured_purge to store::on_unknown_fncall. * region-model.h (region_model_manager::get_or_create_conjured_svalue): Add param "p". * store.cc (binding_cluster::on_unknown_fncall): Likewise. Pass it on to region_model_manager::get_or_create_conjured_svalue. (binding_cluster::on_asm): Likewise. (store::on_unknown_fncall): Add param "p" and pass it on to binding_cluster::on_unknown_fncall. * store.h (binding_cluster::on_unknown_fncall): Add param p. (binding_cluster::on_asm): Likewise. (store::on_unknown_fncall): Likewise. * svalue.h (class conjured_purge): New. gcc/testsuite/ChangeLog: * gcc.dg/analyzer/pr105087-1.c: New test. * gcc.dg/analyzer/pr105087-2.c: New test. * gcc.dg/analyzer/vasprintf-1.c: New test. Signed-off-by:
David Malcolm <dmalcolm@redhat.com>
-
David Malcolm authored
gcc/analyzer/ChangeLog: PR analyzer/105074 * region.cc (ipa_ref_requires_tracking): Drop "context_fndecl", instead using the ref->referring to get the cgraph node of the caller. (symnode_requires_tracking_p): Likewise. gcc/testsuite/ChangeLog: PR analyzer/105074 * gcc.dg/analyzer/pr105074.c: New test. * gcc.dg/analyzer/untracked-1.c (extern_fn_char_ptr): New decl. (test_13): New. Signed-off-by:
David Malcolm <dmalcolm@redhat.com>
-
GCC Administrator authored
-
- Mar 28, 2022
-
-
Indu Bhagat authored
A minor cosmetic fix. 2022-03-28 Indu Bhagat <indu.bhagat@oracle.com> gcc/ChangeLog: * ctfout.cc (ctf_preprocess): Use ctfc_get_num_ctf_vars instead. (output_ctf_vars): Likewise.
-
Tom Tromey authored
The top-level configure options --with-gmp-dir and --with-mpfr-dir were obsoleted and marked as "REMOVED" back in 2006. I think that's long enough ago for everyone to have updated their scripts, so this patch removes them entirely. While doing this, I also found one other leftover that wasn't removed by the earlier patch. This is also removed here. 2022-03-28 Tom Tromey <tromey@adacore.com> * configure.ac: Remove --with-mpfr-dir and --with-gmp-dir. * configure: Rebuild.
-
Joseph Myers authored
* sv.po: Update.
-
Jason Merrill authored
These have been misdocumented since C++98 POD was split into C++11 trivial and standard-layout in r149721. PR c++/59426 gcc/ChangeLog: * doc/extend.texi: Refer to __is_trivial instead of __is_pod.
-
Jason Merrill authored
gcc/cp/ChangeLog: * pt.cc (determine_specialization): Add comment.
-
Patrick Palka authored
We weren't rejecting a concept declared with multiple template parameter lists. PR c++/105067 gcc/cp/ChangeLog: * pt.cc (finish_concept_definition): Check that a concept is declared with exactly one template parameter list. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-err4.C: New test.
-
Patrick Palka authored
Here during declaration matching for the two constrained template friends, we crash from maybe_substitute_reqs_for because the second friend doesn't yet have DECL_TEMPLATE_INFO set (we're being called indirectly from push_template_decl). As far as I can tell, this situation happens only when declaring a constrained template friend within a non-template class (as in the testcase), in which case the substitution would be a no-op anyway. So this patch rearranges maybe_substitute_reqs_for to gracefully handle missing DECL_TEMPLATE_INFO by just skipping the substitution. PR c++/105064 gcc/cp/ChangeLog: * constraint.cc (maybe_substitute_reqs_for): Don't assume DECL_TEMPLATE_INFO is available. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-friend9.C: New test.
-
H.J. Lu authored
PR target/105068 * config/i386/sse.md (*ssse3_pshufbv8qi3): Also replace "Yv" with "Yw" in clobber.
-
Tom de Vries authored
Currently we have: ... $ gcc --target-help 2>&1 | egrep "misa|mptx" -misa= Specify the version of the ptx ISA to use. -mptx= Specify the version of the ptx version to use. Known PTX ISA versions (for use with the -misa= option): Known PTX versions (for use with the -mptx= option): ... As reported in PR104818, the "version of the ptx version" doesn't make much sense. Furthermore, the description of misa (and 'Known ISA versions') is misleading because it does not specify the version of the PTX ISA, but rather the PTX ISA target architecture. Fix this by printing instead: ... $ gcc --target-help 2>&1 | egrep "misa|mptx" -misa= Specify the PTX ISA target architecture to use. -mptx= Specify the PTX ISA version to use. Known PTX ISA target architectures (for use with the -misa= option): Known PTX ISA versions (for use with the -mptx= option): ... Tested on nvptx. gcc/ChangeLog: 2022-03-28 Tom de Vries <tdevries@suse.de> PR target/104818 * config/nvptx/gen-opt.sh (ptx_isa): Improve help text. * config/nvptx/nvptx-gen.opt: Regenerate. * config/nvptx/nvptx.opt (misa, mptx, ptx_version): Improve help text. * config/nvptx/t-nvptx (s-nvptx-gen-opt): Add missing dependency on gen-opt.sh.
-
Jason Merrill authored
For PR104008 we thought it might be enough to keep strip_typedefs from removing this alias template specialization, but this PR demonstrates that other parts of the compiler also need to know to consider it dependent. So, this patch changes complex_alias_template_p to no longer consider template parameters used when their only use appears in a pack expansion, unless they are the parameter packs being expanded. To do that I also needed to change it to use cp_walk_tree instead of for_each_template_parm. It occurs to me that find_template_parameters should probably also use cp_walk_tree, but I'm not messing with that now. PR c++/105003 PR c++/104008 PR c++/102869 gcc/cp/ChangeLog: * pt.cc (complex_alias_template_r): walk_tree callback, replacing uses_all_template_parms_r, complex_pack_expansion_r. (complex_alias_template_p): Adjust. * tree.cc (strip_typedefs): Revert r12-7710 change. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/variadic-alias6.C: New test. * g++.dg/cpp0x/variadic-alias7.C: New test.
-
David Malcolm authored
PR analyzer/104308 reports that when -Wanalyzer-use-of-uninitialized-value complains about certain memmove operations where the source is uninitialized, the diagnostic uses UNKNOWN_LOCATION: In function 'main': cc1: warning: use of uninitialized value '*(short unsigned int *)&s + 1' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 'main': event 1 | |pr104308.c:5:8: | 5 | char s[5]; /* { dg-message "region created on stack here" } */ | | ^ | | | | | (1) region created on stack here | 'main': event 2 | |cc1: | (2): use of uninitialized value '*(short unsigned int *)&s + 1' here | The issue is that gimple_fold_builtin_memory_op converts a memmove to: _3 = MEM <unsigned short> [(char * {ref-all})_1]; MEM <unsigned short> [(char * {ref-all})&s] = _3; but only sets the location of the 2nd stmt, not the 1st. Fixed thusly, giving: pr104308.c: In function 'main': pr104308.c:6:3: warning: use of uninitialized value '*(short unsigned int *)&s + 1' [CWE-457] [-Wanalyzer-use-of-uninitialized-value] 6 | memmove(s, s + 1, 2); /* { dg-warning "use of uninitialized value" } */ | ^~~~~~~~~~~~~~~~~~~~ 'main': events 1-2 | | 5 | char s[5]; /* { dg-message "region created on stack here" } */ | | ^ | | | | | (1) region created on stack here | 6 | memmove(s, s + 1, 2); /* { dg-warning "use of uninitialized value" } */ | | ~~~~~~~~~~~~~~~~~~~~ | | | | | (2) use of uninitialized value '*(short unsigned int *)&s + 1' here | One side-effect of this change is a change in part of the output of gcc.dg/uninit-40.c from: uninit-40.c:47:3: warning: ‘*(long unsigned int *)(&u[1][0][0])’ is used uninitialized [-Wuninitialized] 47 | __builtin_memcpy (&v[1], &u[1], sizeof (V)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ uninit-40.c:45:5: note: ‘*(long unsigned int *)(&u[1][0][0])’ was declared here 45 | V u[2], v[2]; | ^ to: uninit-40.c:47:3: warning: ‘u’ is used uninitialized [-Wuninitialized] 47 | __builtin_memcpy (&v[1], &u[1], sizeof (V)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ uninit-40.c:45:5: note: ‘u’ declared here 45 | V u[2], v[2]; | ^ What's happening is that pass "early_uninit"(29)'s call to maybe_warn_operand is guarded by this condition: 1051 else if (gimple_assign_load_p (stmt) 1052 && gimple_has_location (stmt)) Before the patch, the stmt: _3 = MEM <unsigned long> [(char * {ref-all})&u + 8B]; has no location, and so early_uninit skips this operand at line 1052 above. Later, pass "uninit"(217) tests the var_decl "u$8", and emits a warning for it. With the patch, the stmt has a location, and so early_uninit emits a warning for "u" and sets a NW_UNINIT warning suppression at that location. Later, pass "uninit"(217)'s test of "u$8" is rejected due to that per-location suppression of uninit warnings, from the earlier warning. gcc/ChangeLog: PR analyzer/104308 * gimple-fold.cc (gimple_fold_builtin_memory_op): When optimizing to loads then stores, set the location of the new load stmt. gcc/testsuite/ChangeLog: PR analyzer/104308 * gcc.dg/analyzer/pr104308.c: New test. * gcc.dg/uninit-40.c (foo): Update expression in expected message. Signed-off-by:
David Malcolm <dmalcolm@redhat.com>
-
Jason Merrill authored
This test ICEd after the constexpr new patch (r10-3661) because alloc_call had a NOP_EXPR around it; fixed by moving the NOP_EXPR to alloc_expr. And the PR pointed out that the size_t cookie might need more alignment, so I fix that as well. PR c++/102071 gcc/cp/ChangeLog: * init.cc (build_new_1): Include cookie in alignment. Omit constexpr wrapper from alloc_call. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/aligned-new9.C: New test.
-
Jason Merrill authored
When setting up the hidden namespace-scope decl for a local extern, we also need to set its visibility. PR c++/103291 gcc/cp/ChangeLog: * name-lookup.cc (push_local_extern_decl_alias): Call determine_visibility. gcc/testsuite/ChangeLog: * g++.dg/ext/visibility/visibility-local-extern1.C: New test.
-
Jason Merrill authored
When building a deduction guide from the Test constructor, we need to rewrite the use of _dummy into a dependent reference, i.e. Test<T>::template _dummy. We were using SCOPE_REF for both type and non-type templates; we need to use UNBOUND_CLASS_TEMPLATE for type templates. PR c++/102123 gcc/cp/ChangeLog: * pt.cc (tsubst_copy): Use make_unbound_class_template for rewriting a type template reference. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/class-deduction110.C: New test.
-
Jason Merrill authored
Here, we were wrongly thinking that (const Options&)Widget<T>::c_options is not value-dependent because neither the type nor the (value of) c_options are dependent, but since we're binding it to a reference we also need to consider that it has a value-dependent address. PR c++/103968 gcc/cp/ChangeLog: * pt.cc (value_dependent_expression_p): Check has_value_dependent_address for conversion to reference. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/alias-decl-mem1.C: New test.
-
Jason Merrill authored
More quirks of rewriting member references to dependent references for CTAD. A reference to a member of dependent scope is definitely dependent. And since r11-7044, tsubst_baselink builds a SCOPE_REF, so tsubst_qualified_id should just use it. PR c++/103943 gcc/cp/ChangeLog: * pt.cc (tsubst_qualified_id): Handle getting SCOPE_REF from tsubst_baselink. (instantiation_dependent_scope_ref_p): Check dependent_scope_p. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/class-deduction109.C: New test.
-
Jason Merrill authored
When make_base_init_ok changes a call to a complete constructor into a call to a base constructor, we were never marking the base ctor as used, so it didn't get emitted. PR c++/102045 gcc/cp/ChangeLog: * call.cc (make_base_init_ok): Call make_used. gcc/testsuite/ChangeLog: * g++.dg/cpp1z/aggr-base12.C: New test.
-
Jason Merrill authored
My implementation of union non-type template arguments in r11-2016 broke braced casts of union type, because they are still in syntactic (undigested) form. PR c++/104847 gcc/cp/ChangeLog: * mangle.cc (write_expression): Don't write a union designator when undigested. gcc/testsuite/ChangeLog: * g++.dg/abi/mangle-union1.C: New test.
-
Jason Merrill authored
This was breaking because when we stripped the 't' typedef in s<t<Args>...> to be s<Args...>, the TYPE_MAIN_VARIANT of "Args..." was still "t<Args>...", because type pack expansions are treated as types. Fixed by using the right function to copy a "type". PR c++/99445 PR c++/103769 gcc/cp/ChangeLog: * tree.cc (strip_typedefs): Use build_distinct_type_copy. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/variadic-alias5.C: New test.
-
Tom de Vries authored
When building an nvptx offloading configuration on openSUSE Leap 15.3, the site script /usr/share/site/x86_64-unknown-linux-gnu is activated, setting libexecdir to ${exec_prefix}/lib rather than ${exec_prefix}/libexec: ... | # If user did not specify libexecdir, set the correct target: | # Nor FHS nor openSUSE allow prefix/libexec. Let's default to prefix/lib. | | if test "$libexecdir" = '${exec_prefix}/libexec' ; then | libexecdir='${exec_prefix}/lib' | fi ... However, in libgomp libgomp/plugin/configfrag.ac we hardcode libexec: ... # Configure additional search paths. if test x"$tgt_dir" != x; then offload_additional_options="$offload_additional_options \ -B$tgt_dir/libexec/gcc/\$(target_alias)/\$(gcc_version) \ -B$tgt_dir/bin" ... Fix this by using /$(libexecdir:\$(exec_prefix)/%=%)/ instead of /libexec/. Tested on x86_64-linux with nvptx accelerator. libgomp/ChangeLog: 2022-03-28 Tom de Vries <tdevries@suse.de> * plugin/configfrag.ac: Use /$(libexecdir:\$(exec_prefix)/%=%)/ instead of /libexec/. * configure: Regenerate.
-
Jonathan Wakely authored
libstdc++-v3/ChangeLog: * testsuite/20_util/optional/monadic/and_then.cc: Fix typo. * testsuite/20_util/optional/monadic/transform.cc: Likewise. * testsuite/22_locale/codecvt/always_noconv/char/1.cc: Likewise. * testsuite/22_locale/codecvt/encoding/char/1.cc: Likewise. * testsuite/22_locale/codecvt/in/char/1.cc: Likewise. * testsuite/22_locale/codecvt/max_length/char/1.cc: Likewise. * testsuite/22_locale/codecvt/out/char/1.cc: Likewise. * testsuite/22_locale/codecvt/unshift/char/1.cc: Likewise.
-