aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2022-10-30Daily bump.GCC Administrator3-1/+24
2022-10-29Fortran: Add missing TKR initialization to class variables [PR100097, PR100098]José Rui Faustino de Sousa5-1/+139
gcc/fortran/ChangeLog: PR fortran/100097 PR fortran/100098 * trans-array.cc (gfc_trans_class_array): New function to initialize class descriptor's TKR information. * trans-array.h (gfc_trans_class_array): Add function prototype. * trans-decl.cc (gfc_trans_deferred_vars): Add calls to the new function for both pointers and allocatables. gcc/testsuite/ChangeLog: PR fortran/100097 PR fortran/100098 * gfortran.dg/PR100097.f90: New test. * gfortran.dg/PR100098.f90: New test. (cherry picked from commit 4cfdaeb2755121ac1069f09898def56469b0fb51)
2022-10-29Daily bump.GCC Administrator4-1/+28
2022-10-28Fortran: BOZ literal constants are not compatible to any type [PR103413]Harald Anlauf2-0/+17
gcc/fortran/ChangeLog: PR fortran/103413 * symbol.cc (gfc_type_compatible): A boz-literal-constant has no type and thus is not considered compatible to any type. gcc/testsuite/ChangeLog: PR fortran/103413 * gfortran.dg/illegal_boz_arg_4.f90: New test. (cherry picked from commit f7d28818179247685f3c101f9f2f16366f56309b)
2022-10-28openmp: Allow optional comma after directive-specifier in C/C++Jakub Jelinek10-89/+728
Previously we've been allowing that comma only in C++ when in attribute form (which was the reason why it has been allowed), but 5.1 allows that even in pragma form in C/C++ (with clarifications in 5.2) and 5.2 also in Fortran (which this patch doesn't implement). Note, for directives which take an argument (== unnamed clause), comma is not allowed in between the directive name and the argument, like the directive-1.c testcase shows. 2022-10-28 Jakub Jelinek <jakub@redhat.com> gcc/c/ * c-parser.cc (c_parser_omp_all_clauses): Allow optional comma before the first clause. (c_parser_omp_allocate, c_parser_omp_atomic, c_parser_omp_depobj, c_parser_omp_flush, c_parser_omp_scan_loop_body, c_parser_omp_ordered, c_finish_omp_declare_variant, c_parser_omp_declare_target, c_parser_omp_declare_reduction, c_parser_omp_requires, c_parser_omp_error, c_parser_omp_assumption_clauses): Likewise. gcc/cp/ * parser.cc (cp_parser_omp_all_clauses): Allow optional comma before the first clause even in pragma syntax. (cp_parser_omp_allocate, cp_parser_omp_atomic, cp_parser_omp_depobj, cp_parser_omp_flush, cp_parser_omp_scan_loop_body, cp_parser_omp_ordered, cp_parser_omp_assumption_clauses, cp_finish_omp_declare_variant, cp_parser_omp_declare_target, cp_parser_omp_declare_reduction_exprs, cp_parser_omp_requires, cp_parser_omp_error): Likewise. gcc/testsuite/ * c-c++-common/gomp/directive-1.c: New test. * c-c++-common/gomp/clauses-6.c: New test. * c-c++-common/gomp/declare-variant-2.c (f75a): Declare. (f75): Use f75a as variant instead of f1 and don't expect error. * g++.dg/gomp/clause-4.C (foo): Don't expect error on comma before first clause. * gcc.dg/gomp/clause-2.c (foo): Likewise. (cherry picked from commit 89999f2358724fa4e71c7c3b4de340582c0e43da)
2022-10-28Merge commit '9b116c51a451995f1bae8fdac0748fcf3f06aafe'Thomas Schwinge3-1/+17
2022-10-28[og12] OpenACC: Don't gang-privatize artificial variables: restrict to ↵Thomas Schwinge1-0/+3
blocks: ChangeLog ... forgotten in og12 commit 9a50d282f03f7f1e1ad00de917143a2a8e0c0ee0 "[og12] OpenACC: Don't gang-privatize artificial variables: restrict to blocks".
2022-10-28OpenACC: Don't gang-privatize artificial variables [PR90115]Julian Brown1-0/+22
This patch prevents compiler-generated artificial variables from being treated as privatization candidates for OpenACC. The rationale is that e.g. "gang-private" variables actually must be shared by each worker and vector spawned within a particular gang, but that sharing is not necessary for any compiler-generated variable (at least at present, but no such need is anticipated either). Variables on the stack (and machine registers) are already private per-"thread" (gang, worker and/or vector), and that's fine for artificial variables. We're restricting this to blocks, as we still need to understand what it means for a 'DECL_ARTIFICIAL' to appear in a 'private' clause. Several tests need their scan output patterns adjusted to compensate. 2022-10-14 Julian Brown <julian@codesourcery.com> PR middle-end/90115 gcc/ * omp-low.cc (oacc_privatization_candidate_p): Artificial vars are not privatization candidates. libgomp/ * testsuite/libgomp.oacc-fortran/declare-1.f90: Adjust scan output. * testsuite/libgomp.oacc-fortran/host_data-5.F90: Likewise. * testsuite/libgomp.oacc-fortran/if-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/print-1.f90: Likewise. * testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Likewise. Co-authored-by: Thomas Schwinge <thomas@codesourcery.com> (cherry picked from commit 11e811d8e2f63667f60f73731bb934273f5882b8)
2022-10-28[og12] OpenACC: Don't gang-privatize artificial variables: restrict to blocksThomas Schwinge1-1/+1
Follow-up to og12 commit d4504346d2a1d6ffecb8b2d8e3e04ab8ea259785 "[og12] OpenACC: Don't gang-privatize artificial variables", to restore the previous behavior, until we understand what it means for a 'DECL_ARTIFICIAL' to appear in a 'private' clause. gcc/ * omp-low.cc (oacc_privatization_candidate_p) <DECL_ARTIFICIAL>: Restrict to 'block's. libgomp/ * testsuite/libgomp.oacc-fortran/privatized-ref-2.f90: Adjust.
2022-10-28Resolve '-Wsign-compare' issue in ↵Thomas Schwinge1-0/+5
'gcc/omp-low.cc:lower_rec_simd_input_clauses': ChangeLog ... forgotten in og12 commit 4e32d1582a137d5f34248fdd3e93d35a798f5221 "Resolve '-Wsign-compare' issue in 'gcc/omp-low.cc:lower_rec_simd_input_clauses'".
2022-10-28Resolve '-Wsign-compare' issue in 'gcc/omp-low.cc:lower_rec_simd_input_clauses'Thomas Schwinge1-2/+2
..., introduced in og12 commit 55722a87dd223149dcd41ca9c8eba16ad5b3eddc "openmp: fix max_vf setting for amdgcn offloading": In file included from [...]/source-gcc/gcc/coretypes.h:482, from [...]/source-gcc/gcc/omp-low.cc:27: [...]/source-gcc/gcc/poly-int.h: In instantiation of ‘typename if_nonpoly<Ca, bool>::type maybe_lt(const Ca&, const poly_int_pod<N, Cb>&) [with unsigned int N = 1; Ca = int; Cb = long unsigned int; typename if_nonpoly<Ca, bool>::type = bool]’: [...]/source-gcc/gcc/poly-int.h:1510:7: required from ‘poly_int<N, typename poly_result<Ca, typename if_nonpoly<Cb>::type>::type> ordered_max(const poly_int_pod<N, C>&, const Cb&) [with unsigned int N = 1; Ca = long unsigned int; Cb = int; typename poly_result<Ca, typename if_nonpoly<Cb>::type>::type = long unsigned int; typename if_nonpoly<Cb>::type = int]’ [...]/source-gcc/gcc/omp-low.cc:5180:33: required from here [...]/source-gcc/gcc/poly-int.h:1384:12: error: comparison of integer expressions of different signedness: ‘const int’ and ‘const long unsigned int’ [-Werror=sign-compare] 1384 | return a < b.coeffs[0]; | ~~^~~~~~~~~~~ [...]/source-gcc/gcc/poly-int.h: In instantiation of ‘typename if_nonpoly<Cb, bool>::type maybe_lt(const poly_int_pod<N, C>&, const Cb&) [with unsigned int N = 1; Ca = long unsigned int; Cb = int; typename if_nonpoly<Cb, bool>::type = bool]’: [...]/source-gcc/gcc/poly-int.h:1515:2: required from ‘poly_int<N, typename poly_result<Ca, typename if_nonpoly<Cb>::type>::type> ordered_max(const poly_int_pod<N, C>&, const Cb&) [with unsigned int N = 1; Ca = long unsigned int; Cb = int; typename poly_result<Ca, typename if_nonpoly<Cb>::type>::type = long unsigned int; typename if_nonpoly<Cb>::type = int]’ [...]/source-gcc/gcc/omp-low.cc:5180:33: required from here [...]/source-gcc/gcc/poly-int.h:1373:22: error: comparison of integer expressions of different signedness: ‘const long unsigned int’ and ‘const int’ [-Werror=sign-compare] 1373 | return a.coeffs[0] < b; | ~~~~~~~~~~~~^~~ gcc/ * omp-low.cc (lower_rec_simd_input_clauses): For 'ordered_max', cast 'omp_max_simt_vf ()', 'omp_max_simd_vf ()' to 'unsigned'.
2022-10-28Fix target selector syntax in 'gcc.dg/vect/bb-slp-cond-1.c'Thomas Schwinge2-1/+8
... to restore testing lost in recent commit r13-3225-gbd9a05594d227cde79a67dc715bd9d82e9c464e9 "amdgcn: vector testsuite tweaks" (for example, x86_64-pc-linux-gnu): PASS: gcc.dg/vect/bb-slp-cond-1.c (test for excess errors) PASS: gcc.dg/vect/bb-slp-cond-1.c -flto -ffat-lto-objects scan-tree-dump vect "(no need for alias check [^\\n]* when VF is 1|no alias between [^\\n]* when [^\\n]* is outside \\(-16, 16\\))" [-PASS: gcc.dg/vect/bb-slp-cond-1.c -flto -ffat-lto-objects scan-tree-dump-times vect "loop vectorized" 1-] PASS: gcc.dg/vect/bb-slp-cond-1.c -flto -ffat-lto-objects (test for excess errors) PASS: gcc.dg/vect/bb-slp-cond-1.c -flto -ffat-lto-objects execution test PASS: gcc.dg/vect/bb-slp-cond-1.c execution test PASS: gcc.dg/vect/bb-slp-cond-1.c scan-tree-dump vect "(no need for alias check [^\\n]* when VF is 1|no alias between [^\\n]* when [^\\n]* is outside \\(-16, 16\\))" [-PASS: gcc.dg/vect/bb-slp-cond-1.c scan-tree-dump-times vect "loop vectorized" 1-] gcc/testsuite/ * gcc.dg/vect/bb-slp-cond-1.c: Fix target selector syntax. (cherry picked from commit 0607307768b66a90e27c5bc91a247acc938f070e)
2022-10-28Daily bump.GCC Administrator3-1/+17
2022-10-27openacc: Revert erroneous gang reduction changesMarcel Vollweiler6-46/+19
This patch reverts some changes related to "gang reduction on an orphan loop" of commit 3a5e525489f2f808093ae1f12b5d2b406f571ec7 "Various OpenACC reduction enhancements - FE change" similar to the mainline commit 77d24d43644909852998043335b5a0e09d1e8f02. gcc/c/ChangeLog: * c-typeck.cc (c_finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/cp/ChangeLog: * semantics.cc (finish_omp_clauses): Remove "gang reduction on an orphan loop" checking. gcc/fortran/ChangeLog: * openmp.cc (oacc_is_parallel): Remove. (resolve_oacc_loop_blocks): Remove "gang reduction on an orphan loop" checking.
2022-10-27openacc: Revert erroneous gang reduction change in OpenAcc testMarcel Vollweiler2-4/+8
This patch reverts an erroneous modification of an OpenAcc test case in d27d6c9e1e3bc18ba0113757b743b306ea69f825 "Various OpenACC reduction enhancements - test cases". The same reversion was already done on mainline with commit 77d24d43644909852998043335b5a0e09d1e8f02. gcc/testsuite/ChangeLog: * gfortran.dg/goacc/orphan-reductions-1.f90: Adjust.
2022-10-27Merge branch 'releases/gcc-12' into devel/omp/gcc-12Tobias Burnus19-35/+227
Merge up to r12-8872-gca0220d42e075194ca1341c98a0a9a9f3fd1c719 (27th Oct 2022)
2022-10-27lto: do not load LTO stream for aliases [PR107418]Martin Liska1-1/+2
PR lto/107418 gcc/lto/ChangeLog: * lto-dump.cc (lto_main): Do not load LTO stream for aliases. (cherry picked from commit be6c75547385c69706370f4e792b04295f708a5a)
2022-10-27IRA: Make sure array is big enoughTorbjörn SVENSSON1-0/+1
In commit 081c96621da, the call to resize_reg_info() was moved before the call to remove_scratches() and the latter one can increase the number of regs and that would cause an out of bounds usage on the reg_renumber global array. Without this patch, the following testcase randomly fails with: during RTL pass: ira In file included from /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c:13: /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c: In function 'checkgSf13': /src/gcc/testsuite/gcc.dg/compat/fp-struct-test-by-value-y.h:28:1: internal compiler error: Segmentation fault /src/gcc/testsuite/gcc.dg/compat/struct-by-value-5b_y.c:22:1: note: in expansion of macro 'TEST' gcc/ChangeLog: * ira.cc: Resize array after reg number increased. Co-Authored-By: Yvan ROUX <yvan.roux@foss.st.com> Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com> (cherry picked from commit 4e1d704243a4f3c4ded47cd0d02427bb7efef069)
2022-10-27Daily bump.GCC Administrator3-1/+24
2022-10-26aarch64: update Ampere-1 core definitionPhilipp Tomsich1-1/+1
This brings the extensions detected by -mcpu=native on Ampere-1 systems in sync with the defaults generated for -mcpu=ampere1. Note that some early kernel versions on Ampere1 may misreport the presence of PAUTH and PREDRES (i.e., -mcpu=native will add 'nopauth' and 'nopredres'). gcc/ChangeLog: * config/aarch64/aarch64-cores.def (AARCH64_CORE): Update Ampere-1 core entry. (cherry picked from commit db2f5d661239737157cf131de7d4df1c17d8d88d)
2022-10-26aarch64: fix off-by-one in reading cpuinfoPhilipp Tomsich3-2/+25
Fixes: 341573406b39 Don't subtract one from the result of strnlen() when trying to point to the first character after the current string. This issue would cause individual characters (where the 128 byte buffers are stitched together) to be lost. gcc/ChangeLog: * config/aarch64/driver-aarch64.cc (readline): Fix off-by-one. gcc/testsuite/ChangeLog: * gcc.target/aarch64/cpunative/info_18: New test. * gcc.target/aarch64/cpunative/native_cpu_18.c: New test. (cherry picked from commit b1cfbccc41de6aec950c0f662e7e85ab34bfff8a)
2022-10-26Handle operator new with alignment in usm transform.Hafiz Abid Qadeer5-4/+83
Since C++17, the is a variant of operator new with alignment. This patch converts it to omp_aligned_alloc when unified shared memory is being used. gcc/ChangeLog: * omp-low.cc (usm_transform): Handle operator new with alignment. libgomp/ChangeLog: * testsuite/libgomp.c++/usm-2.C: New test. gcc/testsuite/ChangeLog: * g++.dg/gomp/usm-4.C: New test. * g++.dg/gomp/usm-5.C: New test.
2022-10-26Daily bump.GCC Administrator3-1/+51
2022-10-25OpenAcc: Correction of reduction enhancementMarcel Vollweiler2-7/+5
Commit bce2c92cfec2ae1eb9d79e36dff5a220b688bfa1 "Various OpenACC reduction enhancements - ME and nvptx changes" introduced several regressions: gcc/testsuite/c-c++-common/goacc/nested-reductions-1-routine.c gcc/testsuite/c-c++-common/goacc/nested-reductions-2-routine.c gcc/testsuite/c-c++-common/goacc/orphan-reductions-2.c gcc/testsuite/gfortran.dg/goacc/nested-reductions-1-routine.f90 gcc/testsuite/gfortran.dg/goacc/nested-reductions-2-routine.f90 gcc/testsuite/gfortran.dg/goacc/orphan-reductions-2.f90 This fixes above regressions. gcc/ChangeLog: * omp-offload.cc (oacc_loop_auto_partitions): Removed OLF reduction handling.
2022-10-25Relax assertion in profilerEric Botcazou4-5/+20
This assertion in branch_prob: if (bb == ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb) { location_t loc = DECL_SOURCE_LOCATION (current_function_decl); gcc_checking_assert (!RESERVED_LOCATION_P (loc)); had been correct until the fix for PR debug/101598 was installed. gcc/ * profile.cc (branch_prob): Be prepared for ignored functions with DECL_SOURCE_LOCATION set to UNKNOWN_LOCATION. gcc/testsuite: * gnat.dg/specs/coverage1.ads: New test. * gnat.dg/specs/variant_part.ads: Minor tweak. * gnat.dg/specs/weak1.ads: Add dg directive.
2022-10-25IBM zSystems: Fix function_ok_for_sibcall [PR106355]Stefan Schulze Frielinghaus5-23/+100
For a parameter with BLKmode we cannot use REG_NREGS in order to determine the number of consecutive registers. Streamlined this with the implementation of s390_function_arg. Fix some indentation whitespace, too. gcc/ChangeLog: PR target/106355 * config/s390/s390.cc (s390_call_saved_register_used): For a parameter with BLKmode fix determining number of consecutive registers. gcc/testsuite/ChangeLog: * gcc.target/s390/pr106355.h: Common code for new tests. * gcc.target/s390/pr106355-1.c: New test. * gcc.target/s390/pr106355-2.c: New test. * gcc.target/s390/pr106355-3.c: New test. (cherry picked from commit cb994acc08b67f26a54e7c5dc1f4995a2ce24d98)
2022-10-25i386: fix pedantic warningMartin Liska1-1/+1
PR target/107364 gcc/ChangeLog: * common/config/i386/i386-cpuinfo.h (enum processor_vendor): Fix pedantic warning. (cherry picked from commit f3f000b7689ce9eb6364808072025672af1e4e1b)
2022-10-25x86: fix VENDOR_MAX enum valueMartin Liska1-1/+3
PR target/107364 gcc/ChangeLog: * common/config/i386/i386-cpuinfo.h (enum processor_vendor): Reorder enum values as BUILTIN_VENDOR_MAX should not point in the middle of the valid enum values. (cherry picked from commit f751bf4c5d1aaa1aacfcbdec62881c5ea1175dfb)
2022-10-25Daily bump.GCC Administrator1-1/+1
2022-10-24vect: WORKAROUND vectorizer bugAndrew Stubbs2-1/+20
This patch disables vectorization of memory accesses to non-default address spaces where the pointer size is different to the usual pointer size. This condition typically occurs in OpenACC programs on amdgcn, where LDS memory is used for broadcasting gang-private variables between threads. In particular, see libgomp.oacc-c-c++-common/private-variables.c The problem is that the address space information is dropped from the various types in the middle-end and eventually it triggers an ICE trying to do an address conversion. That ICE can be avoided by defining POINTERS_EXTEND_UNSIGNED, but that just produces wrong RTL code later on. A correct solution would ensure that all the vectypes have the correct address spaces, but I don't have time for that right now. gcc/ChangeLog: * tree-vect-data-refs.cc (vect_analyze_data_refs): Workaround an address-space bug.
2022-10-24amdgcn: disallow USM on gfx908Andrew Stubbs2-0/+5
It does work, but not well and only with the amdgpu.noreply=0 kernel boot option. gcc/ChangeLog: * config/gcn/gcn.cc (gcn_init_cumulative_args): Disallow gfx908.
2022-10-24amdgcn, libgomp: USM allocation updateAndrew Stubbs1-0/+19
Allocate Unified Shared Memory via malloc and hsa_amd_svm_attributes_set, instead of hsa_allocate_memory. This scheme should be more efficient for for memory that is first accessed by the CPU. libgomp/ChangeLog: * plugin/plugin-gcn.c (HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED): New. (HSA_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT): New. (HSA_AMD_SVM_ATTRIB_GLOBAL_FLAG): New. (HSA_AMD_SVM_GLOBAL_FLAG_COARSE_GRAINED): New. (hsa_amd_svm_attribute_pair_t): New. (struct hsa_runtime_fn_info): Add hsa_amd_svm_attributes_set_fn. (dump_hsa_system_info): Dump HSA_AMD_SYSTEM_INFO_SVM_SUPPORTED and HSA_SYSTEM_INFO_SVM_ACCESSIBLE_BY_DEFAULT. (DLSYM_OPT_FN): New. (init_hsa_runtime_functions): Add hsa_amd_svm_attributes_set. (GOMP_OFFLOAD_usm_alloc): Use malloc and hsa_amd_svm_attributes_set. (GOMP_OFFLOAD_usm_free): Use regular free. * testsuite/libgomp.c/usm-1.c: Add -mxnack=on for amdgcn. * testsuite/libgomp.c/usm-2.c: Likewise. * testsuite/libgomp.c/usm-3.c: Likewise. * testsuite/libgomp.c/usm-4.c: Likewise.
2022-10-24gcc/testsuite: Change 'cunrolli' to 'cunrolli1' in dump scan + optionsTobias Burnus13-21/+37
The OG12 commit 3e8b51d143e openacc: Move pass_oacc_device_lower after pass_graphite adds a new pass, which also re-invokes some previous passes. This seems to have the effect that the pass names and, hence, the dump names have now a tailing number. In that commit, 'cunrolli' was changed to 'cunrolli1 for some testcases. This commit does likewise for some more testcases. In particular, . in scan-tree-dump the tailing '1' is crucial to change UNRESOLVED to PASS. . for "-fdisable-tree-cunrolli1" option, it changes FAIL (excess errors) to PASS . even without the change, "-fdump-tree-cunrolli{-details,-optimized}" has PASS, but I believe the tailing 1 ensures that only the first 'cunrolli' dumps. gcc/testsuite * g++.dg/ext/unroll-1.C: Change 'cunrolli' to 'cunrolli1' in dg-options and scan-tree-dump. * g++.dg/ext/unroll-2.C: Likewise. * g++.dg/ext/unroll-3.C: Likewise. * g++.dg/vect/pr36648.cc: Likewise. * gcc.dg/tree-prof/init-array.c: Likewise. * gcc.dg/tree-ssa/pr100359.c: Likewise. * gcc.dg/tree-ssa/pr59597.c: Likewise. * gcc.dg/unroll-2.c: Likewise. * gfortran.dg/directive_unroll_1.f90: Likewise. * gfortran.dg/directive_unroll_4.f90: Likewise. * gnat.dg/unroll1.adb: Likewise. * gnat.dg/unroll2.adb: Likewise.
2022-10-24OpenMP: Fix reverse offload GOMP_TARGET_REV IFN corner cases [PR107236]Tobias Burnus5-7/+43
For 'target parallel' and similarly nested directives, cgraph_node's calls_declare_variant_alt was not set in the parent region node but in cfun->decl. Hence, pass_omp_device_lower did not process handle the internal function GOMP_TARGET_REV. - Solution is to set it to the DECL_CONTEXT, which is set in adjust_context_and_scope. The cgraph_node::create_clone issue is exposed with -O2 for the existing libgomp.fortran/reverse-offload-1.f90. PR middle-end/107236 gcc/ChangeLog: * omp-expand.cc (expand_omp_target): Set calls_declare_variant_alt in DECL_CONTEXT and not to cfun->decl. * cgraphclones.cc (cgraph_node::create_clone): Copy also the node's calls_declare_variant_alt value. gcc/testsuite/ChangeLog: * gfortran.dg/gomp/target-device-ancestor-6.f90: New test. (cherry picked from commit 178ac530fe67e4f2fc439cc4ce89bc19d571ca31)
2022-10-24Merge branch 'releases/gcc-12' into devel/omp/gcc-12Tobias Burnus25-62/+417
Merge up to r12-8861-g1ccec25cf0c3c9cfd5882c83fd8cc56ea2987bad (24th Oct 2022)
2022-10-24Missing pr104517.c change from: 'Add a restriction on allocate clause ↵Tobias Burnus1-8/+10
(OpenMP 5.0)' OG12 commit df47c25110474565f521508a1545232550052a75 included everything of r13-150-g1a8c4d9ed36556a95bd7d53c04d2ec4c95594061 but the change to gcc/testsuite/gcc.dg/gomp/pr104517.c This commit cherry-picks the missing changes to that file. Note: The OG12 commit already contained the ChangeLog.omp entry for that file. gcc/testsuite/ * gcc.dg/gomp/pr104517.c: Update. (cherry picked from commit 1a8c4d9ed36556a95bd7d53c04d2ec4c95594061)
2022-10-24Daily bump.GCC Administrator3-1/+20
2022-10-23Fortran: error recovery with references of bad array constructors [PR105633]Harald Anlauf2-3/+15
gcc/fortran/ChangeLog: PR fortran/105633 * expr.cc (find_array_section): Move check for NULL pointers so that both subscript triplets and vector subscripts are covered. gcc/testsuite/ChangeLog: PR fortran/105633 * gfortran.dg/pr105633.f90: New test. Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org> (cherry picked from commit ecb20df4fa6d99daa635c7fb662dc0554610777e)
2022-10-23Daily bump.GCC Administrator1-1/+1
2022-10-22Daily bump.GCC Administrator3-1/+32
2022-10-21omp-oacc-kernels-decompose.cc: fix -fcompare-debug with GIMPLE_DEBUGTobias Burnus2-2/+9
GIMPLE_DEBUG were put in a parallel region of its own, which is not only pointless but also breaks -fcompare-debug. With this commit, they are handled like simple assignments: those placed are places into the same body as the loop such that only one parallel region remains as without debugging. This fixes the existing testcase libgomp.oacc-c-c++-common/kernels-loop-g.c. Note: GIMPLE_DEBUG are only accepted with -fcompare-debug; if they appear otherwise, decompose_kernels_region_body rejects them with a sorry (unchanged). gcc/ * omp-oacc-kernels-decompose.cc (top_level_omp_for_in_stmt, decompose_kernels_region_body): Handle GIMPLE_DEBUG like simple assignment.
2022-10-21amdgcn: Use FLAT addressing for all functions with pointer arguments [PR105421]Julian Brown1-6/+9
The GCN backend uses a heuristic to determine whether to use FLAT or GLOBAL addressing in a particular (offload) function: namely, if a function takes a pointer-to-scalar parameter, it is assumed that the pointer may refer to "flat scratch" space, and thus FLAT addressing must be used instead of GLOBAL. I came up with this heuristic initially whilst working on support for moving OpenACC gang-private variables into local-data share (scratch) memory. The assumption that only scalar variables would be transformed in that way turned out to be wrong. For example, prior to the next patch in the series, Fortran compiler-generated temporary structures were treated as gang private and moved to LDS space, typically overflowing the region allocated for such variables. That will no longer happen after that patch is applied, but there may be other cases of structs moving to LDS space now or in the future that this patch may be needed for. 2022-10-14 Julian Brown <julian@codesourcery.com> PR target/105421 gcc/ * config/gcn/gcn.cc (gcn_detect_incoming_pointer_arg): Any pointer argument forces FLAT addressing mode, not just pointer-to-non-aggregate. (cherry picked from commit 7c55755d4c760de326809636531478fd7419e1e5)
2022-10-21Added "noclone" to scan-tree-dump for several OpenAcc tests.Marcel Vollweiler11-11/+22
This fixes multiple tests in addition to b0256655fb402f87c921cd782b873dd301760ebd. gcc/testsuite/ChangeLog: * c-c++-common/goacc/classify-kernels-unparallelized-graphite.c: Add "noclone" in scan-tree-dump. * c-c++-common/goacc/kernels-acc-loop-reduction.c: Likewise. * c-c++-common/goacc/kernels-acc-loop-smaller-equal.c: Likewise. * c-c++-common/goacc/kernels-loop-2-acc-loop.c: Likewise. * c-c++-common/goacc/kernels-loop-3-acc-loop.c: Likewise. * c-c++-common/goacc/kernels-loop-acc-loop.c: Likewise. * c-c++-common/goacc/kernels-loop-n-acc-loop.c: Likewise. * gfortran.dg/goacc/kernels-loop-data-parloops-2.f95: Likewise. * gfortran.dg/goacc/kernels-loop-parloops-2.f95: Likewise. * gfortran.dg/goacc/kernels-loop-parloops.f95: Likewise.
2022-10-21tree-optimization/107323 - loop distribution partition ordering issueRichard Biener2-14/+64
The following reverts part of the PR94125 fix which causes us to use a bogus partition ordering after applying versioning for alias to the testcase in PR107323. Instead PR94125 is fixed by appropriately considering to be merged SCCs when skipping edges we want to ignore because of the alias versioning. PR tree-optimization/107323 * tree-loop-distribution.cc (pg_unmark_merged_alias_ddrs): New function. (loop_distribution::break_alias_scc_partitions): Revert postorder save/restore from the PR94125 fix. Instead make sure to not ignore edges from SCCs we are going to merge. * gcc.dg/tree-ssa/pr107323.c: New testcase. (cherry picked from commit 09f9814dc02c161ed78604c6df70b19b596f7524)
2022-10-21Daily bump.GCC Administrator3-1/+72
2022-10-20Make 'c-c++-common/goacc/kernels-decompose-pr100400-1-*.c' behave ↵Thomas Schwinge2-7/+11
consistently, regardless of checking level Fix-up for commit c14ea6a72fb1ae66e3d32ac8329558497c6e4403 "Catch 'GIMPLE_DEBUG' misbehavior in OpenACC 'kernels' decomposition [PR100400, PR103836, PR104061]". For C++ compilation of 'c-c++-common/goacc/kernels-decompose-pr100400-1-2.c', we first emit a 'sorry' diagnostic, and then a 'gcc_unreachable' (or 'internal_error', see below) diagnostic, but for example, for '--enable-checking=release' (thus, '!CHECKING_P'), the second one may actually be turned into a 'confused by earlier errors, bailing out' diagnostic. (See 'gcc/diagnostic.cc:diagnostic_report_diagnostic': "When not checking, ICEs are converted to fatal errors when an error has already occurred.") Thus, make 'c-c++-common/goacc/kernels-decompose-pr100400-1-2.c' behave consistently via '-Wfatal-errors', and thus only matching the 'sorry' diagnostic. For example, for '--enable-checking=no' (thus, '!ENABLE_ASSERT_CHECKING'), a call to 'gcc_unreachable' cannot be assumed emit an 'internal_error'-like diagnostic, so explicitly call 'internal_error' in 'gcc/omp-oacc-kernels-decompose.cc:visit_loops_in_gang_single_region', in the 'GIMPLE_OMP_FOR' case, to avoid regressing 'c-c++-common/goacc/kernels-decompose-pr100400-1-3.c', and 'c-c++-common/goacc/kernels-decompose-pr100400-1-4.c'. PR middle-end/100400 gcc/ * omp-oacc-kernels-decompose.cc (visit_loops_in_gang_single_region) <GIMPLE_OMP_FOR>: Explicitly call 'internal_error'. gcc/testsuite/ * c-c++-common/goacc/kernels-decompose-pr100400-1-2.c: Specify '-Wfatal-errors'. (cherry picked from commit da6305558bab9e24943848e4fc5bd8738d7e8f9b)
2022-10-20aarch64: Prevent generation of /M BRKAS and BRKBSRichard Sandiford3-18/+16
Bit of a brown-paper-bag bug, but: GCC was generating non-existent merging forms of BRKAS and BRKBS. Those instructions only support zero predication (although BRKA and BRKB support both). gcc/ * config/aarch64/aarch64-sve.md (*aarch64_brk<brk_op>_cc): Remove merging alternative. (*aarch64_brk<brk_op>_ptest): Likewise. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general/brka_1.c: Expect a separate PTEST instruction. * gcc.target/aarch64/sve/acle/general/brkb_1.c: Likewise. (cherry picked from commit 57675c7f92a3bd3ca8dae1faac7f2f51d40e0f9e)
2022-10-20aarch64: Fix matching of BRKNSRichard Sandiford4-10/+90
Unlike other flag-setting SVE instructions, BRKNS sets the flags based on an all-true governing predicate, rather than the GP operand. gcc/ * config/aarch64/iterators.md (SVE_BRKP): New iterator. * config/aarch64/aarch64-sve.md (*aarch64_brkn_cc): New pattern. (*aarch64_brkn_ptest): Likewise. (*aarch64_brk<brk_op>_cc): Restrict to SVE_BRKP. (*aarch64_brk<brk_op>_ptest): Likewise. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general/brkn_1.c: Expect separate PTEST instructions. * gcc.target/aarch64/sve/acle/general/brkn_2.c: New test. (cherry picked from commit 6bec66640597e2604f51fc1642c7d279164cd442)
2022-10-20aarch64: Define __ARM_FEATURE_RCPCRichard Sandiford4-6/+29
https://github.com/ARM-software/acle/pull/199 adds a new feature macro for RCPC, for use in things like inline assembly. This patch adds the associated support to GCC. Also, RCPC is required for Armv8.3-A and later, but the armv8.3-a entry didn't include it. This was probably harmless in practice since GCC simply ignored the extension until now. (The GAS definition is OK.) gcc/ * config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH8_3): Add AARCH64_FL_RCPC. (AARCH64_ISA_RCPC): New macro. * config/aarch64/aarch64-cores.def (thunderx3t110, zeus, neoverse-v1) (neoverse-512tvb, saphira): Remove RCPC from these Armv8.3-A+ cores. * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define __ARM_FEATURE_RCPC when appropriate. gcc/testsuite/ * gcc.target/aarch64/pragma_cpp_predefs_1.c: Add RCPC tests.
2022-10-20Daily bump.GCC Administrator3-1/+41