aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2022-03-30ubsan: Fix ICE due to -fsanitize=object-size [PR105093]Jakub Jelinek2-0/+19
The following testcase ICEs, because for a volatile X & RESULT_DECL ubsan wants to take address of that reference. instrument_object_size is called with x, so the base is equal to the access and the var is automatic, so there is no risk of an out of bounds access for it. Normally we wouldn't instrument those because we fold address of the t - address of inner to 0, add constant size of the decl and it is equal to what __builtin_object_size computes. But the volatile results in the subtraction not being folded. The first hunk fixes it by punting if we access the whole automatic decl, so that even volatile won't cause a problem. The second hunk (not strictly needed for this testcase) is similar to what has been added to asan.cc recently, if we actually take address of a decl and keep it in the IL, we better mark it addressable. 2022-03-30 Jakub Jelinek <jakub@redhat.com> PR sanitizer/105093 * ubsan.cc (instrument_object_size): If t is equal to inner and is a decl other than global var, punt. When emitting call to UBSAN_OBJECT_SIZE ifn, make sure base is addressable. * g++.dg/ubsan/pr105093.C: New test.
2022-03-30store-merging: Avoid ICEs on roughly ~0ULL/8 sized stores [PR105094]Jakub Jelinek2-1/+14
On the following testcase on 64-bit targets, store-merging sees a MEM_REF store from {} ctor with "negative" bitsize where bitoff + bitsize wraps around to very small end offset. This later confuses the code so that it allocates just a few bytes of memory but fills in huge amounts of it. Later on there is a param_store_merging_max_size size check but due to the wrap-around we pass that. The following patch punts on such large bitsizes. 2022-03-30 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/105094 * gimple-ssa-store-merging.cc (mem_valid_for_store_merging): Punt if bitsize <= 0 rather than just == 0. * gcc.dg/pr105094.c: New test.
2022-03-30openmp: Ensure DECL_CONTEXT of OpenMP iterators in templates [PR105092]Jakub Jelinek2-0/+28
cp_parser_omp_iterators does: DECL_ARTIFICIAL (iter_var) = 1; DECL_CONTEXT (iter_var) = current_function_decl; pushdecl (iter_var); on the newly created iterator vars, but when we instantiate templates containing them, we just tsubst_decl them (which apparently for automatic vars clears DECL_CONTEXT with a comment that pushdecl should be called on them later). The result is that we have automatic vars in the IL which have NULL DECL_CONTEXT and the analyzer is upset about those. Fixed by setting DECL_CONTEXT and calling pushdecl during the instantiation. 2022-03-30 Jakub Jelinek <jakub@redhat.com> PR c++/105092 * pt.cc (tsubst_omp_clause_decl): When handling iterators, set DECL_CONTEXT of the iterator var to current_function_decl and call pushdecl. * g++.dg/gomp/pr105092.C: New test.
2022-03-30[nvptx, doc] Update misa and mptx, add march and march-mapTom de Vries1-7/+20
Update nvptx documentation: - Use meaningful terms: "PTX ISA target architecture" and "PTX ISA version". - Remove invalid claim that "ISA strings must be lower-case". - Add missing sm_xx entries. - Fix misa default. - Add march, copying misa doc. - Declare misa an march alias. - Add march-map. - Fix "for given the specified" typo. gcc/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> * doc/invoke.texi (misa, mptx): Update. (march, march-map): Add.
2022-03-30c++: Fox template-introduction tentative parsing in class bodies clear ↵Jakub Jelinek2-0/+20
colon_corrects_to_scope_p [PR105061] The concepts support (in particular template introductions from concepts TS) broke the following testcase, valid unnamed bitfields with dependent types (or even just typedefs) were diagnosed as typos (: instead of correct ::) in template introduction during their tentative parsing. The following patch fixes that by not doing this : to :: correction when member_p is true. 2022-03-30 Jakub Jelinek <jakub@redhat.com> PR c++/105061 * parser.cc (cp_parser_template_introduction): If member_p, temporarily clear parser->colon_corrects_to_scope_p around tentative parsing of nested name specifier. * g++.dg/concepts/pr105061.C: New test.
2022-03-30options: Improve 'LangEnabledBy' option property diagnosticsThomas Schwinge2-41/+62
No changes in generated files. gcc/ * opt-functions.awk (n_args): New function. (lang_enabled_by): Merge function into... * optc-gen.awk <END>: ... sole user here. Improve diagnostics.
2022-03-30options, '-Wc++[...]-extensions': Remove undefined one-argument ↵Thomas Schwinge1-5/+5
'LangEnabledBy' option properties A one-argument form of the 'LangEnabledBy' option property isn't defined, and effectively appears to be a no-op. Removing these only changes 'build-gcc/gcc/optionlist' accordingly, but no other generated files. Clean-up for commit ee336ecb2a7161bc28f6c5343d97870a8d15e177 "c++: Add new warning options for C++ language mismatches". gcc/c-family/ * c.opt (Wc++11-extensions, Wc++14-extensions, Wc++17-extensions) (Wc++20-extensions, Wc++23-extensions): Remove 'LangEnabledBy' option properties.
2022-03-30options: Remove 'gcc/c-family/c.opt:Wuse-after-free' option definition recordThomas Schwinge1-5/+1
A one-argument form of the 'LangEnabledBy' option property isn't defined, and effectively appears to be a no-op. Removing that one, the 'gcc/c-family/c.opt:Wuse-after-free' option definition record becomes empty, and doesn't add anything over 'gcc/common.opt:Wuse-after-free', and may thus be removed entirely. This only changes 'build-gcc/gcc/optionlist' accordingly, but no other generated files. Clean-up after recent commit 671a283636de75f7ed638ee6b01ed2d44361b8b6 "Add -Wuse-after-free [PR80532]". gcc/c-family/ * c.opt (Wuse-after-free): Remove.
2022-03-30options: Remove 'gcc/c-family/c.opt:Warray-bounds' option definition recordThomas Schwinge1-4/+0
A one-argument form of the 'LangEnabledBy' option property isn't defined, and effectively appears to be a no-op. Removing that one, the 'gcc/c-family/c.opt:Warray-bounds' option definition record becomes empty, and doesn't add anything over 'gcc/common.opt:Warray-bounds', and may thus be removed entirely. This only changes 'build-gcc/gcc/optionlist' accordingly, but no other generated files. Clean-up after r262912/commit 0d7f90652080c42cddca6f9b68f6895218c70880 "PR middle-end/82063 - issues with arguments enabled by -Wall". gcc/c-family/ * c.opt (Warray-bounds): Remove.
2022-03-29analyzer/strndup-1.c: skip on *-*-vxworks*Alexandre Oliva1-1/+2
Add vxworks to the set of operating systems whose C libraries don't support strndup. for gcc/testsuite/ChangeLog * gcc.dg/analyzer/strndup-1.c: Add *-*-vxworks* to no-strndup in libc.
2022-03-29gcc.dg/weak/typeof-2: arm may use constant poolAlexandre Oliva1-0/+2
Some ARM configurations, such as with -mlong-calls, load the call target from the constant pool, breaking the expectation of the test as on several other targets. for gcc/testsuite/ChangeLog * gcc.dg/weak/typeof-2.c: Add arm*-*-* to targets that may place the call target in a constant pool.
2022-03-30Daily bump.GCC Administrator6-1/+328
2022-03-29analyzer: skip constant pool in -fdump-analyzer-untracked [PR testsuite/105085]David Malcolm2-0/+33
In r12-7809-g5f6197d7c197f9 I added -fdump-analyzer-untracked as support for DejaGnu testing of an optimization of -fanalyzer, PR analyzer/104954. PR testsuite/105085 notes testsuite failures of the form: FAIL: gcc.dg/analyzer/untracked-1.c (test for excess errors) Excess errors: cc1: warning: track '*.LC1': yes where these warnings are emitted on some targets where the test causes labelled constants to be created in the constant pool. We probably ought not to be tracking the values of such decls in the store, given that they're meant to be constant, and I attempted various fixes to make the "should we track this decl" logic smarter, but given that we're in stage 4, the simplest fix seems to be for -fdump-analyzer-untracked to skip such decls in its output, to minimize test output differences between targets. gcc/analyzer/ChangeLog: PR testsuite/105085 * region-model-manager.cc (dump_untracked_region): Skip decls in the constant pool. gcc/testsuite/ChangeLog: PR testsuite/105085 * gcc.dg/analyzer/untracked-1.c: Add further test coverage. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
2022-03-29Fortran: avoid NULL pointer dereference checking elemental procedure argsHarald Anlauf2-2/+15
gcc/fortran/ChangeLog: PR fortran/104571 * resolve.cc (resolve_elemental_actual): Avoid NULL pointer dereference. gcc/testsuite/ChangeLog: PR fortran/104571 * gfortran.dg/pr104571.f90: New test. Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
2022-03-29testsuite: Allow setting gpp_std_list in configuration filesJonathan Wakely2-4/+9
This allows the gpp_std_list variable to be set in ~/.dejagnurc instead of using the GXX_TESTSUITE_STDS environment variable. This is consistent with how other defaults such as tool_timeout can be set. The environment variable can still be used to override the default. gcc/testsuite/ChangeLog: * lib/g++-dg.exp: Update comments. * lib/g++.exp (gpp_std_list): Check for an existing value before setting it to an empty list.
2022-03-29testsuite: Disable tests for C++23 that depend on std::unexpectedJonathan Wakely1-1/+1
These tests depend on unexpected handlers, which are no longer declared for C++23 mode. Adjust the target specifier so they don't run. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/noexcept06.C: Disable for C++23. libstdc++-v3/ChangeLog: * testsuite/18_support/exception/38732.cc: Disable for C++23. * testsuite/18_support/headers/exception/synopsis.cc: Likewise. * testsuite/18_support/unexpected_handler.cc: Likewise.
2022-03-29Update gcc hr.poJoseph Myers1-1098/+784
* hr.po: Update.
2022-03-29Fortran: character length of pointer assignments in structure constructorsHarald Anlauf2-1/+50
gcc/fortran/ChangeLog: PR fortran/50549 * resolve.cc (resolve_structure_cons): Reject pointer assignments of character with different lengths in structure constructor. gcc/testsuite/ChangeLog: PR fortran/50549 * gfortran.dg/char_pointer_assign_7.f90: New test.
2022-03-29gimple: Wrong -Wimplicit-fallthrough with if(1) [PR103597]Marek Polacek3-6/+194
This patch fixes a wrong -Wimplicit-fallthrough warning for case 0: if (1) // wrong may fallthrough return 0; case 1: which in .gimple looks like <D.1981>: // case 0 if (1 != 0) goto <D.1985>; else goto <D.1986>; <D.1985>: D.1987 = 0; // predicted unlikely by early return (on trees) predictor. return D.1987; <D.1986>: // dead <D.1982>: // case 1 and the warning thinks that <D.1986>: falls through to <D.1982>:. It does not know that <D.1986> is effectively a dead label, only reachable through fallthrough from previous instructions, never jumped to. To that effect, Jakub introduced UNUSED_LABEL_P, which is set on such dead labels. collect_fallthrough_labels has code to deal with cases like case 2: if (e != 10) i++; // this may fallthru, warn else return 44; case 3: which collects labels that may fall through. Here it sees the "goto <D.1990>;" at the end of the then branch and so when the warning reaches ... <D.1990>: // from if-then <D.1984>: // case 3 it knows it should warn about the possible fallthrough. But an UNUSED_LABEL_P is not a label that can fallthrough like that, so it should ignore those. However, we still want to warn about this: case 0: if (1) n++; // falls through case 1: so collect_fallthrough_labels needs to return the "n = n + 1;" statement, rather than the dead label. Co-authored-by: Jakub Jelinek <jakub@redhat.com> PR middle-end/103597 gcc/ChangeLog: * gimplify.cc (collect_fallthrough_labels): Don't push UNUSED_LABEL_Ps into labels. Maybe set prev to the statement preceding UNUSED_LABEL_P. (gimplify_cond_expr): Set UNUSED_LABEL_P. * tree.h (UNUSED_LABEL_P): New. gcc/testsuite/ChangeLog: * c-c++-common/Wimplicit-fallthrough-39.c: New test.
2022-03-29c-family: Add -Wmisleading-indentation testcase [PR71637]Patrick Palka1-0/+11
We no longer emit a bogus warning for the below testcase after r11-3266-g4839de55e2c986. PR c++/71637 gcc/testsuite/ChangeLog: * c-c++-common/Wmisleading-indentation-6.c: New test.
2022-03-29Allow vsx_extract_<mode> to use Altivec registers.Michael Meissner1-6/+3
I noticed that the vsx_extract_<mode> pattern for V2DImode and V2DFmode only allowed traditional floating point registers, and it did not allow Altivec registers. The original code was written a few years ago when we used the old register allocator, and support for scalar floating point in Altivec registers was just being added to GCC. I have built the spec 2017 benchmark suite With all 4 patches in this series applied, and compared it to the build with the previous 3 patches applied. In addition to the changes from the previous 3 patches, this patch now changes the code for the following 3 benchmarks (2 floating point, 1 integer): bwaves_r, fotonik3d_r, xalancbmk_r I have built bootstrap versions on the following systems. There were no regressions in the runs: Power9 little endian, --with-cpu=power9 Power10 little endian, --with-cpu=power10 Power8 big endian, --with-cpu=power8 (both 32-bit & 64-bit tests) 2022-03-29 Michael Meissner <meissner@linux.ibm.com> gcc/ * config/rs6000/vsx.md (vsx_extract_<mode>): Allow destination to be any VSX register.
2022-03-29aarch64: correctly handle zero-sized bit-fields in AAPCS64 [PR102024]Richard Earnshaw2-3/+60
On aarch64 the AAPCS64 states that an HFA is determined by the 'shape' of the object after layout has been completed, so anything that adds no members and does not cause the layout to be modified should be ignored for the purposes of determining which registers are used for parameter passing. A zero-sized bit-field falls into this category. This was not handled correctly for C structs and in G++-11 only handled correctly because such fields were eliminated early by the front end. gcc/ChangeLog: PR target/102024 * config/aarch64/aarch64.cc (aapcs_vfp_sub_candidate): Handle zero-sized bit-fields. Detect cases where a warning may be needed. (aarch64_vfp_is_call_or_return_candidate): Emit a note if a zero-sized bit-field has caused parameter passing to change. gcc/testsuite/ChangeLog: * gcc.target/aarch64/aapcs64/test_28.c: New test.
2022-03-29arm: correctly handle zero-sized bit-fields in AAPCS [PR102024]Richard Earnshaw2-3/+63
On arm the AAPCS states that an HFA is determined by the 'shape' of the object after layout has been completed, so anything that adds no members and does not cause the layout to be modified should be ignored for the purposes of determining which registers are used for parameter passing. A zero-sized bit-field falls into this category. This was not handled correctly for C structs and in G++-11 only handled correctly because such fields were eliminated early by the front end. gcc/ChangeLog: PR target/102024 * config/arm/arm.cc (aapcs_vfp_sub_candidate): Handle zero-sized bit-fields. Detect cases where a warning may be needed. (aapcs_vfp_is_call_or_return_candidate): Emit a note if a zero-sized bit-field has caused parameter passing to change. gcc/testsuite/ChangeLog: PR target/102024 * gcc.target/arm/aapcs/vfp26.c: New test.
2022-03-29arm: temporarily disable 'local' pcs selection (PR96882)Richard Earnshaw1-1/+10
The arm port has an optimization used during selection of the function's ABI to permit deviation from the strict ABI when the function does not escape the current translation unit. Unfortunately, the ABI selection it makes can be unsafe if it changes how a result is returned because not enough information is available via the RETURN_IN_MEMORY hook to determine where the function gets used. This can result in some parts of the compiler thinking a value is returned in memory while others think it is returned in registers. To mitigate this, this patch temporarily disables the optimization and falls back to using the default ABI for the translation. gcc/ChangeLog: PR target/96882 * config/arm/arm.cc (arm_get_pcs_model): Disable selection of ARM_PCS_AAPCS_LOCAL.
2022-03-29[nvptx] Add __PTX_ISA_VERSION_{MAJOR,MINOR}__Tom de Vries7-0/+72
Add preprocessor macros __PTX_ISA_VERSION_MAJOR__ and __PTX_ISA_VERSION_MINOR__. For the default 6.0, we have: ... $ echo | cc1 -E -dD - 2>&1 | grep PTX_ISA_VERSION #define __PTX_ISA_VERSION_MAJOR__ 6 #define __PTX_ISA_VERSION_MINOR__ 0 ... and for 3.1, we have: ... $ echo | cc1 -mptx=3.1 -E -dD - 2>&1 | grep PTX_ISA_VERSION #define __PTX_ISA_VERSION_MAJOR__ 3 #define __PTX_ISA_VERSION_MINOR__ 1 ... These can be used to express things like: ... #if __PTX_ISA_VERSION_MAJOR__ >= 4 && __PTX_ISA_VERSION_MAJOR__ >= 1 /* Code using %dynamic_smem_size. */ #else /* Fallback code. */ #endif ... Tested on nvptx. gcc/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> PR target/104857 * config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Emit __PTX_ISA_VERSION_MAJOR__ and __PTX_ISA_VERSION_MINOR__. * config/nvptx/nvptx.cc (ptx_version_to_number): New function. * config/nvptx/nvptx-protos.h (ptx_version_to_number): Declare. gcc/testsuite/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> PR target/104857 * gcc.target/nvptx/ptx31.c: New test. * gcc.target/nvptx/ptx60.c: New test. * gcc.target/nvptx/ptx63.c: New test. * gcc.target/nvptx/ptx70.c: New test.
2022-03-29[nvptx] Update help text for m64Tom de Vries1-1/+2
In the docs we have for m64: ... Ignored, but preserved for backward compatibility. Only 64-bit ABI is supported. ... But with --target-help, we have instead: ... $ gcc --target-help ... -m64 Generate code for a 64-bit ABI. ... which could be interpreted as meaning that generating code for a 32-bit ABI is still possible. Fix this by instead emitting the same text as in the docs: ... -m64 Ignored, but preserved for backward compatibility. Only 64-bit ABI is supported. ... Tested on nvptx. gcc/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> * config/nvptx/nvptx.opt (m64): Update help text to reflect that it is ignored.
2022-03-29[nvptx] Add march-mapTom de Vries2-0/+56
Say we have an sm_50 board, and we want to run a benchmark using the highest possible march setting. Currently there's march=sm_30, march=sm_35, march=sm_53, but no march=sm_50. So, we'd need to pick march=sm_35. Likewise, for a test script that handles multiple boards, we'd need a mapping from native board sm_xx to march, which might have to be updated with newer gcc releases. Add an option march-map, such that we can just specify march-map=sm_50, and let the compiler map this to the appropriate march. The option is implemented as a list of aliases, such that we have a somewhat lengthy (17 lines in total): ... $ gcc --help=target ... -march-map=sm_30 Same as -misa=sm_30. -march-map=sm_32 Same as -misa=sm_30. ... -march-map=sm_87 Same as -misa=sm_80. -march-map=sm_90 Same as -misa=sm_80. ... This implementation was chosen in the hope that it'll be easier if we end up with some misa multilib. It would be nice to have the mapping list generated from an updated nvptx-sm.def, but for now it's spelled out in nvptx.opt. Tested on nvptx. gcc/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> PR target/104714 * config/nvptx/nvptx.opt (march-map=*): Add aliases. gcc/testsuite/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> PR target/104714 * gcc.target/nvptx/march-map.c: New test.
2022-03-29Disable gathers for znver3 for vectors with 2 or 4 elementsJan Hubicka3-2/+22
gcc/ChangeLog: 2022-03-28 Jan Hubicka <hubicka@ucw.cz> * config/i386/i386-builtins.cc (ix86_vectorize_builtin_gather): Test TARGET_USE_GATHER_2PARTS and TARGET_USE_GATHER_4PARTS. * config/i386/i386.h (TARGET_USE_GATHER_2PARTS): New macro. (TARGET_USE_GATHER_4PARTS): New macro. * config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): New tune (X86_TUNE_USE_GATHER_4PARTS): New tune
2022-03-29[nvptx] Add march alias for misaTom de Vries3-0/+16
The target option misa has the following description: ... $ gcc --target-help 2>&1 | grep misa -misa= Specify the PTX ISA target architecture to use. ... The name misa is somewhat poorly chosen. It suggests that for a use -misa=sm_30, sm_30 is the name of a specific Instruction Set Architecture. Instead, sm_30 is the name of a specific target architecture in the generic PTX Instruction Set Architecture. Futhermore, there's mptx, which also has ISA in the description: ... -mptx= Specify the PTX ISA version to use. ... Add the more intuitive alias march for misa: ... $ gcc --target-help 2>&1 | grep march -march= Alias: Same as -misa=. ... Tested on nvptx. gcc/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> * config/nvptx/nvptx.opt (march): Add alias of misa. gcc/testsuite/ChangeLog: 2022-03-29 Tom de Vries <tdevries@suse.de> * gcc.target/nvptx/main.c: New test. * gcc.target/nvptx/march.c: New test.
2022-03-29LoongArch Port: Add doc.chenglulu3-5/+268
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * doc/install.texi: Add LoongArch options section. * doc/invoke.texi: Add LoongArch options section. * doc/md.texi: Add LoongArch options section. contrib/ChangeLog: * config-list.mk: Add LoongArch triplet.
2022-03-29LoongArch Port: gcc/testsuitechenglulu16-10/+346
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/testsuite/ChangeLog: * g++.dg/cpp0x/constexpr-rom.C: Add build options for LoongArch. * g++.old-deja/g++.abi/ptrmem.C: Add LoongArch support. * g++.old-deja/g++.pt/ptrmem6.C: xfail for LoongArch. * gcc.dg/20020312-2.c: Add LoongArch support. * c-c++-common/zero-scratch-regs-10.c: Like wise * c-c++-common/zero-scratch-regs-11.c: Like wise * c-c++-common/zero-scratch-regs-8.c: Like wise * c-c++-common/zero-scratch-regs-9.c: Like wise * gcc.dg/loop-8.c: Skip on LoongArch. * gcc.dg/torture/stackalign/builtin-apply-2.c: Likewise. * gcc.dg/tree-ssa/ssa-fre-3.c: Likewise. * go.test/go-test.exp: Define the LoongArch target. * lib/target-supports.exp: Like wise. * gcc.target/loongarch/loongarch.exp: New file. * gcc.target/loongarch/tst-asm-const.c: Like wise. * gcc.target/loongarch/larch-builtin.c: Like wise.
2022-03-29LoongArch Port: Builtin macros.chenglulu1-0/+109
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * config/loongarch/loongarch-c.cc
2022-03-29LoongArch Port: Builtin functions.chenglulu2-0/+779
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.
2022-03-29LoongArch Port: Machine description C files and .h files.chenglulu5-0/+7316
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.
2022-03-29LoongArch Port: Machine description files.chenglulu8-0/+4762
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.
2022-03-29LoongArch Port: Regenerate gcc/configure.chenglulu1-6/+60
2022-03-29 Chenghua Xu <xuchenghua@loongson.cn> Lulu Cheng <chenglulu@loongson.cn> gcc/ChangeLog: * configure: Regenerate file.
2022-03-29LoongArch Port: gcc buildchenglulu20-5/+2834
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.
2022-03-29options: Fix 'enabledby_negargs' typo in 'LangEnabledBy' option property ↵Thomas Schwinge1-2/+2
diagnostics Originally introduced almost ten years ago in r193303/commit 0829c7f7c5210cd1581042115cfe95c97283f44c "optc-gen.awk: Factor code out to...". gcc/ * opt-functions.awk (lang_enabled_by): Fix 'enabledby_negargs' typo.
2022-03-29testsuite: Check fpic support in pr103275.cMarc Poulhiès1-0/+1
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.
2022-03-29testsuite: fixup pr97521.c and pr96713.c on i686-*Marc Poulhiès2-1/+2
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.
2022-03-29tree-optimization/105080 - make sure SCEV is available for rangerRichard Biener2-12/+15
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.
2022-03-28analyzer: ensure that we purge state when reusing a conjured_svalue [PR105087]David Malcolm12-27/+180
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>
2022-03-28analyzer: fix ICE with incorrect lookup of cgraph node [PR105074]David Malcolm3-6/+22
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>
2022-03-29Daily bump.GCC Administrator5-1/+210
2022-03-28ctfout: use ctfc_get_num_ctf_vars insteadIndu Bhagat1-2/+2
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.
2022-03-28Update gcc sv.poJoseph Myers1-302/+200
* sv.po: Update.
2022-03-28c++: Fix __has_trivial_* docs [PR59426]Jason Merrill1-4/+4
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.
2022-03-28c++: add commentJason Merrill1-0/+2
gcc/cp/ChangeLog: * pt.cc (determine_specialization): Add comment.
2022-03-28c++: reject concept w/ multiple tparm lists [PR105067]Patrick Palka2-0/+12
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.
2022-03-28c++: constrained template friend matching ICE [PR105064]Patrick Palka2-9/+16
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.