aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-09-26Daily bump.GCC Administrator8-1/+212
2020-09-26Disable ipa-modref with live patchingJan Hubicka2-1/+8
2020-09-26 Jan Hubicka <hubicka@ucw.cz> * doc/invoke.texi: Add -fno-ipa-modref to flags disabled by -flive-patching. * opts.c (control_options_for_live_patching): Disable ipa-modref.
2020-09-26Fix gimple_clobber handling in ipa-modrefJan Hubicka1-1/+1
2020-09-25 Jan Hubicka <hubicka@ucw.cz> * ipa-modref.c (analyze_stmt): Fix return value for gimple_clobber.
2020-09-25c++: Adjust pushdecl/duplicate_decls APINathan Sidwell6-62/+81
The decl pushing APIs and duplicate_decls take an 'is_friend' parm, when what they actually mean is 'hide this from name lookup'. That conflation has gotten more anachronistic as time moved on. We now have anticipated builtins, and I plan to have injected extern decls soon. So this patch is mainly a renaming excercise. is_friend -> hiding. duplicate_decls gets an additional 'was_hidden' parm. As I've already said, hiddenness is a property of the symbol table, not the decl. Builtins are now pushed requesting hiding, and pushdecl asserts that we don't attempt to push a thing that should be hidden without asking for it to be hidden. This is the final piece of groundwork to get rid of a bunch of 'this is hidden' markers on decls and move the hiding management entirely into name lookup. gcc/cp/ * cp-tree.h (duplicate_decls): Replace 'is_friend' with 'hiding' and add 'was_hidden'. * name-lookup.h (pushdecl_namespace_level): Replace 'is_friend' with 'hiding'. (pushdecl): Likewise. (pushdecl_top_level): Drop is_friend parm. * decl.c (check_no_redeclaration_friend_default_args): Rename parm olddelc_hidden_p. (duplicate_decls): Replace 'is_friend' with 'hiding' and 'was_hidden'. Do minimal adjustments in body. (cxx_builtin_function): Pass 'hiding' to pushdecl. * friend.c (do_friend): Pass 'hiding' to pushdecl. * name-lookup.c (supplement_binding_1): Drop defaulted arg to duplicate_decls. (update_binding): Replace 'is_friend' with 'hiding'. Drop defaulted arg to duplicate_decls. (do_pushdecl): Replace 'is_friend' with 'hiding'. Assert no surprise hidhing. Adjust duplicate_decls calls to inform of old decl's hiddennes. (pushdecl): Replace 'is_friend' with 'hiding'. (set_identifier_type_value_with_scope): Adjust update_binding call. (do_pushdecl_with_scope): Replace 'is_friend' with 'hiding'. (pushdecl_outermost_localscope): Drop default arg to do_pushdecl_with_scope. (pushdecl_namespace_level): Replace 'is_friend' with 'hiding'. (pushdecl_top_level): Drop is_friend parm. * pt.c (register_specialization): Comment duplicate_decls call args. (push_template_decl): Commont pushdecl_namespace_level. (tsubst_friend_function, tsubst_friend_class): Likewise.
2020-09-25c++: Replace tag_scope with TAG_howNathan Sidwell6-96/+84
I always found tag_scope confusing, as it is not a scope, but a direction of how to lookup or insert an elaborated type tag. This replaces it with a enum class TAG_how. I also add a new value, HIDDEN_FRIEND, to distinguish the two cases of innermost-non-class insertion that we currently conflate. Also renamed 'lookup_type_scope' to 'lookup_elaborated_type', because again, we're not providing a scope to lookup in. gcc/cp/ * name-lookup.h (enum tag_scope): Replace with ... (enum class TAG_how): ... this. Add HIDDEN_FRIEND value. (lookup_type_scope): Replace with ... (lookup_elaborated_type): ... this. (pushtag): Use TAG_how, not tag_scope. * cp-tree.h (xref_tag): Parameter is TAG_how, not tag_scope. * decl.c (lookup_and_check_tag): Likewise. Adjust. (xref_tag_1, xref_tag): Likewise. adjust. (start_enum): Adjust lookup_and_check_tag call. * name-lookup.c (lookup_type_scope_1): Rename to ... (lookup_elaborated_type_1) ... here. Use TAG_how, not tag_scope. (lookup_type_scope): Rename to ... (lookup_elaborated_type): ... here. Use TAG_how, not tag_scope. (do_pushtag): Use TAG_how, not tag_scope. Adjust. (pushtag): Likewise. * parser.c (cp_parser_elaborated_type_specifier): Adjust. (cp_parser_class_head): Likewise. gcc/objcp/ * objcp-decl.c (objcp_start_struct): Use TAG_how not tag_scope. (objcp_xref_tag): Likewise.
2020-09-25AArch64: Add Linux cpuinfo string for rng featureKyrylo Tkachov1-1/+1
The Linux kernel has defined the cpuinfo string for the +rng feature, so this patch adds that to GCC so that -march=native can pick it up. Bootstrapped and tested on aarch64-none-linux-gnu. gcc/ * config/aarch64/aarch64-option-extensions.def (rng): Add cpuinfo string.
2020-09-25arm: Add missing Neoverse V1 featureAlex Coplan1-1/+1
This adds a missing feature (FP16) to the Neoverse V1 description in AArch32 GCC. gcc/ChangeLog: * config/arm/arm-cpus.in (neoverse-v1): Add FP16.
2020-09-25gcov: fix streaming of HIST_TYPE_IOR histogram type.Martin Liska1-1/+4
gcc/ChangeLog: PR gcov-profile/64636 * value-prof.c (stream_out_histogram_value): Allow negative values for HIST_TYPE_IOR.
2020-09-25c++: DECL_BUILTIN_P for builtinsNathan Sidwell6-29/+33
We currently detect builtin decls via DECL_ARTIFICIAL && !DECL_HIDDEN_FUNCTION_P, which, besides being clunky, is a problem as hiddenness is a property of the symbol table -- not the decl being hidden. This adds DECL_BUILTIN_P, which just looks at the SOURCE_LOCATION -- we have a magic one for builtins. One of the consequential changes is to make function-scope omp udrs have function context (needed because otherwise duplicate-decls thinks the types don't match at the point we check). This is also morally better, because that's what they are -- nested functions, stop lying. (That's actually my plan for all DECL_LOCAL_DECL_P decls, as they are distinct decls to the namespace-scope decl they alias.) gcc/cp/ * cp-tree.h (DECL_BUILTIN_P): New. * decl.c (duplicate_decls): Use it. Do not treat omp-udr as a builtin. * name-lookup.c (anticipated_builtin): Use it. (set_decl_context_in_fn): Function-scope OMP UDRs have function context. (do_nonmember_using_decl): Use DECL_BUILTIN_P. * parser.c (cp_parser_omp_declare_reduction): Function-scope OMP UDRs have function context. Assert we never find a valid duplicate. * pt.c (tsubst_expr): Function-scope OMP UDRs have function context. libcc1/ * libcp1plugin.cc (supplement_binding): Use DECL_BULTIN_P.
2020-09-25[nvptx] Fix Wimplicit-fallthrough in nvptx.c with -save-tempsTom de Vries1-2/+2
When compiling nvptx.c using -save-temps, I ran into Wimplicit-fallthrough warnings. The fallthrough locations have been marked with a fallthrough comment, but that doesn't work with -save-temps, something that has been filed as PR78497. Work around this by using gcc_fallthrough () in addition to the comment. Tested by building target nvptx, copying nvptx.c compile line and adding -save-temps. gcc/ChangeLog: 2020-09-25 Tom de Vries <tdevries@suse.de> * config/nvptx/nvptx.c (nvptx_assemble_integer, nvptx_print_operand): Use gcc_fallthrough ().
2020-09-25middle-end/96814 - fix VECTOR_BOOLEAN_TYPE_P CTOR RTL expansionRichard Biener2-7/+30
The RTL expansion code for CTORs doesn't handle VECTOR_BOOLEAN_TYPE_P with bit-precision elements correctly as the testcase shows before the PR97085 fix. The following makes it do the correct thing (not 100% sure for CTOR of sub-vectors due to the lack of a testcase). The alternative would be to assert such CTORs do not happen (and also add IL verification for this). The GIMPLE FE needs a way to declare the VECTOR_BOOLEAN_TYPE_P vectors (thus the C FE needs that). 2020-09-25 Richard Biener <rguenther@suse.de> PR middle-end/96814 * expr.c (store_constructor): Handle VECTOR_BOOLEAN_TYPE_P CTORs correctly. * gcc.target/i386/pr96814.c: New testcase.
2020-09-25middle-end/97207 - implement move assign for auto_vec<>Richard Biener1-1/+7
This implements the missing move assignment to make std::swap work on auto_vec<> 2020-09-25 Richard Biener <rguenther@suse.de> PR middle-end/97207 * vec.h (auto_vec<T>::operator=(auto_vec<T>&&)): Implement.
2020-09-25libstdc++: Remove redundant -std=gnu++1z flags from makefileJonathan Wakely2-44/+0
Now that G++ defaults to gnu++17 we don't need special rules for compiling the C++17 allocation and deallocation functions. libstdc++-v3/ChangeLog: * libsupc++/Makefile.am: Remove redundant -std=gnu++1z flags. * libsupc++/Makefile.in: Regenerate.
2020-09-25arm: Fix fp16 move patterns for base MVERichard Sandiford9-45/+1295
This patch fixes ICEs in gcc.dg/torture/float16-basic.c for -march=armv8.1-m.main+mve -mfloat-abi=hard. The problem was that an fp16 argument was (rightly) being passed in FPRs, but the fp16 move patterns only handled GPRs. LRA then cycled trying to look for a way of handling the FPR. It looks like there are three related problems here: (1) We're using the wrong fp16 move pattern for base MVE. *mov<mode>_vfp_<mode>16 (the pattern we use for +mve.fp) works for base MVE too. (2) The fp16 MVE load and store patterns are separate from the main move patterns. The loads and stores should instead be alternatives of the main move patterns, so that LRA knows what to do with pseudo registers that become stack slots. (3) The range restrictions for the loads and stores were wrong for fp16: we were enforcing a multiple of 4 in [-255*4, 255*4] instead of a multiple of 2 in [-255*2, 255*2]. (2) came from a patch to prevent writeback being used for MVE. That patch also added a Uj constraint to enforce the correct memory types for MVE. I think the simplest fix is therefore to merge the loads and stores back into the main pattern and extend the Uj constraint so that it acts like Um for non-MVE. The testcase for that patch was mve-vldstr16-no-writeback.c, whose main function is: void fn1 (__fp16 *pSrc) { __fp16 high; __fp16 *pDst = 0; unsigned i; for (i = 0;; i++) if (pSrc[i]) pDst[i] = high; } Fixing (2) causes the store part to fail, not because we're using writeback, but because we decide to use GPRs to store high (which is uninitialised, and so gets replaced with zero). This patch therefore adds some scan-assembler-nots instead. (I wondered about changing the testcase to initialise high, but that seemed like a bad idea for a regression test.) For (3): MVE seems to be the only thing to use arm_coproc_mem_operand_wb (and its various interfaces) for 16-bit scalars: the Neon patterns only use it for 32-bit scalars. I've added new tests to try the various FPR alternatives of the move patterns. The range of offsets that GCC uses for FPR loads and stores is the intersection of the range allowed for GPRs and FPRs, so the tests include GPR<->memory tests as well. The fp32 and fp64 tests already pass, they're just there for completeness. gcc/ * config/arm/arm-protos.h (arm_mve_mode_and_operands_type_check): Delete. * config/arm/arm.c (arm_coproc_mem_operand_wb): Use a scale factor of 2 rather than 4 for 16-bit modes. (arm_mve_mode_and_operands_type_check): Delete. * config/arm/constraints.md (Uj): Allow writeback for Neon, but continue to disallow it for MVE. * config/arm/arm.md (*arm32_mov<HFBF:mode>): Add !TARGET_HAVE_MVE. * config/arm/vfp.md (*mov_load_vfp_hf16, *mov_store_vfp_hf16): Fold back into... (*mov<mode>_vfp_<mode>16): ...here but use Uj for the FPR memory constraints. Use for base MVE too. gcc/testsuite/ * gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c: Allow the store to use GPRs instead of FPRs. Add scan-assembler-nots for writeback. * gcc.target/arm/armv8_1m-fp16-move-1.c: New test. * gcc.target/arm/armv8_1m-fp32-move-1.c: Likewise. * gcc.target/arm/armv8_1m-fp64-move-1.c: Likewise.
2020-09-25tree-optimization/97199 - fix virtual operand update in if-conversionRichard Biener1-44/+63
This fixes a corner case with virtual operand update in if-conversion by re-organizing the code to remove edges only after the last point we need virtual PHI operands to be available. 2020-09-25 Richard Biener <rguenther@suse.de> PR tree-optimization/97199 * tree-if-conv.c (combine_blocks): Remove edges only after looking at virtual PHI args.
2020-09-25testsuite: [aarch64] Fix aarch64/advsimd-intrinsics/v{trn,uzp,zip}_half.cChristophe Lyon3-9/+0
Since r11-3402 (g:65c9878641cbe0ed898aa7047b7b994e9d4a5bb1), the vtrn_half, vuzp_half and vzip_half started failing with vtrn_half.c:76:17: error: redeclaration of 'vector_float64x2' with no linkage vtrn_half.c:77:17: error: redeclaration of 'vector2_float64x2' with no linkage vtrn_half.c:80:17: error: redeclaration of 'vector_res_float64x2' with no linkage This is because r11-3402 now always declares float64x2 variables for aarch64, leading to a duplicate declaration in these testcases. The fix is simply to remove these now useless declarations. These tests are skipped on arm*, so there is no impact on that target. 2020-09-25 Christophe Lyon <christophe.lyon@linaro.org> gcc/testsuite/ PR target/71233 * gcc.target/aarch64/advsimd-intrinsics/vtrn_half.c: Remove declarations of vector, vector2, vector_res for float64x2 type. * gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vzip_half.c: Likewise.
2020-09-25testsuite/97204 - fix gcc.target/i386/sse2-mmx-pinsrw.cRichard Biener1-4/+4
This fixes the testcase writing to adjacent stack vars, exposed my IPA modref. 2020-09-25 Richard Biener <rguenther@suse.de> PR testsuite/97204 * gcc.target/i386/sse2-mmx-pinsrw.c: Fix.
2020-09-25openmp: Add support for non-rect simd and improve collapsed simd supportJakub Jelinek4-111/+904
The following change adds support for non-rectangular simd loops. While working on that, I've noticed we actually don't vectorize collapsed simd loops at all, because the code that I thought would be vectorizable actually is not vectorized. While in theory for the constant lower/upper bounds and constant step of all but the outermost loop we could in theory vectorize by computing the seprate iterators using vectorized division and modulo for each of them from the single iterator that increments by 1 from 0 to total iteration count in the loop nest, I think that would be fairly expensive and the chances of the loop body being vectorizable would be low e.g. because of array indices unlikely to be linear and would need scatters/gathers. This patch changes the generated code to vectorize only the innermost loop which has higher chance of being vectorized. Below is the list of tests and function names in which the patch resulted in vectorizing something that hasn't been vectorized before (ok, the first line is a new test). I've also found that the vectorizer will not vectorize loops with non-constant steps, I plan to do something about those incrementally on the omp-expand.c side (basically, compute number of iterations before the loop and use a 0 to number_of_iterations step 1 IV as the main one). I have problem with the composite simd vectorization though. The point is that each thread (or task etc.) is given only a range of consecutive iterations, so somewhere earlier it computes total number of iterations and splits the work between the workers and then the intent is to try to vectorize it. So, each thread is then given a begin ... end-1 range that it would handle. This means that from the single begin value I need to compute the individual iteration vars I should start at and then goto into the loop nest to begin iterating there (and actually compute how many iterations the innermost loop should do each time so that it stops before end). Very roughly the IL I emit is something like: int t[100][100][100]; void foo (int a, int b, int c, int d, int e, int f, int g, int h, int u, int v, int w, int x) { int i, j, k; int cnt; if (x) { i = u; j = v; k = w; goto doit; } for (i = a; i < b; i += c) for (j = d; j < e; j += f) { k = g; doit: for (; k < h; k++) t[i][j][k] += i + j + k; } } Unfortunately, some pass then turns the innermost loop to have more than 2 basic blocks and it isn't vectorized because of that. Also, I have disabled (for now) SIMTization of collapsed simd loops, because for SIMT it would be using a single thread anyway and I didn't want to bother with checking SIMT on all places I've been changing. If SIMT support is added for some or all collapsed loops, that omp-low.c change needs to be reverted. Here is that list of what hasn't been vectorized before and is now: gcc/testsuite/gcc.dg/vect/vect-simd-17.c doit gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90 bar libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-10.c f28_taskloop_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-10.c _Z24f28_taskloop_simd_normalv._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-11.c f25_t_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-11.c f26_t_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-11.c f27_t_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-11.c f28_tpf_simd_guided32._omp_fn.1 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-11.c f28_tpf_simd_runtime._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c _Z17f25_t_simd_normaliiiiiii._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c _Z17f26_t_simd_normaliiiixxi._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c _Z17f27_t_simd_normalv._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c _Z20f28_tpf_simd_runtimev._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-11.c _Z21f28_tpf_simd_guided32v._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.c f7_simd_normal libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-2.c f7_simd_normal libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.c f8_f_simd_guided32 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-2.c f8_f_simd_guided32 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.c f8_f_simd_runtime libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-2.c f8_f_simd_runtime libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-2.c f8_pf_simd_guided32._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-2.c f8_pf_simd_runtime._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.c _Z18f8_pf_simd_runtimev._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-2.c _Z19f8_pf_simd_guided32v._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-4.c f8_taskloop_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-4.c _Z23f8_taskloop_simd_normalv._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-5.c f7_t_simd_normal._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-5.c f8_tpf_simd_guided32._omp_fn.1 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-5.c f8_tpf_simd_runtime._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-5.c _Z16f7_t_simd_normalv._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-5.c _Z19f8_tpf_simd_runtimev._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-5.c _Z20f8_tpf_simd_guided32v._omp_fn.1 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c f25_simd_normal libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f25_simd_normal libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c f26_simd_normal libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f26_simd_normal libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c f27_simd_normal libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f27_simd_normal libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c f28_f_simd_guided32 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f28_f_simd_guided32 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c f28_f_simd_runtime libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f28_f_simd_runtime libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f28_pf_simd_guided32._omp_fn.0 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/for-8.c f28_pf_simd_runtime._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c _Z19f28_pf_simd_runtimev._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/for-8.c _Z20f28_pf_simd_guided32v._omp_fn.0 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/master-combined-1.c main._omp_fn.9 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/master-combined-1.c main._omp_fn.9 libgomp/testsuite/libgomp.c++/../libgomp.c-c++-common/simd-1.c f2 libgomp/testsuite/libgomp.c/../libgomp.c-c++-common/simd-1.c f2 libgomp/testsuite/libgomp.c/pr70680-2.c f1._omp_fn.0 libgomp/testsuite/libgomp.c/pr70680-2.c f2._omp_fn.0 libgomp/testsuite/libgomp.c/pr70680-2.c f3._omp_fn.0 libgomp/testsuite/libgomp.c/pr70680-2.c f4._omp_fn.0 libgomp/testsuite/libgomp.c/simd-8.c foo libgomp/testsuite/libgomp.c/simd-9.c bar libgomp/testsuite/libgomp.c/simd-9.c foo 2020-09-25 Jakub Jelinek <jakub@redhat.com> gcc/ * omp-low.c (scan_omp_1_stmt): Don't call scan_omp_simd for collapse > 1 loops as simt doesn't support collapsed loops yet. * omp-expand.c (expand_omp_for_init_counts, expand_omp_for_init_vars): Small tweaks to function comment. (expand_omp_simd): Rewritten collapse > 1 support to only attempt to vectorize the innermost loop and emit set of outer loops around it. For non-composite simd with collapse > 1 without broken loop don't even try to compute number of iterations first. Add support for non-rectangular simd loops. (expand_omp_for): Don't sorry_at on non-rectangular simd loops. gcc/testsuite/ * gcc.dg/vect/vect-simd-17.c: New test. libgomp/ * testsuite/libgomp.c/loop-25.c: New test.
2020-09-25Add cgraph_edge::debug function.Martin Liska2-0/+17
gcc/ChangeLog: * cgraph.c (cgraph_edge::debug): New. * cgraph.h (cgraph_edge::debug): New.
2020-09-25Fix spacing in cgraph_node::dump.Martin Liska1-5/+4
gcc/ChangeLog: * cgraph.c (cgraph_node::dump): Always print space at the end of a message. Remove one extra space.
2020-09-25[testsuite] Add missing require-effective-target allocaTom de Vries1-0/+1
Add missing require-effect-target alloca directives. Tested on nvptx. gcc/testsuite/ChangeLog: 2020-09-25 Tom de Vries <tdevries@suse.de> * gcc.dg/analyzer/pr93355-localealias.c: Require effective target alloca.
2020-09-25[testsuite] Add effective target ident_directiveTom de Vries3-0/+11
On nvptx we run into: ... FAIL: c-c++-common/ident-1b.c -Wc++-compat scan-assembler GCC: FAIL: c-c++-common/ident-2b.c -Wc++-compat scan-assembler GCC: ... Using a scan-assembler directive adds -fno-indent to the compile options. The test c-c++-common/ident-1b.c adds dg-options "-fident", and intends to check that the -fident overrides the -fno-indent, by means of the scan-assembler. But for nvptx, there's no .ident directive, both with -fident and -fno-ident. Fix this by adding an effective target ident_directive, and requiring it in both test-cases. Tested on nvptx and x86_64. gcc/testsuite/ChangeLog: 2020-09-24 Tom de Vries <tdevries@suse.de> * lib/target-supports.exp (check_effective_target_ident_directive): New proc. * c-c++-common/ident-1b.c: Require effective target ident_directive. * c-c++-common/ident-2b.c: Same.
2020-09-25Daily bump.GCC Administrator12-1/+399
2020-09-24libiberty: Add get_DW_UT_name and update include/dwarf2.{def,h}Mark Wielaard3-14/+29
This adds a get_DW_UT_name function to dwarfnames using dwarf2.def for use in binutils readelf to show the unit types in a DWARF5 header. Also remove DW_CIE_VERSION which was already removed in binutils/gdb and is not used in gcc. include/ChangeLog: * dwarf2.def: Add DWARF5 Unit type header encoding macros DW_UT_FIRST, DW_UT and DW_UT_END. * dwarf2.h (enum dwarf_unit_type): Removed and define using DW_UT_FIRST, DW_UT and DW_UT_END macros. (DW_CIE_VERSION): Removed. (get_DW_UT_name): New function declaration. libiberty/ChangeLog: * dwarfnames.c (get_DW_UT_name): Define using DW_UT_FIRST, DW_UT and DW_UT_END.
2020-09-24c++: Cleanup some decl pushing apisNathan Sidwell13-58/+52
In cleaning up local decl handling, here's an initial patch that takes advantage of C++'s default args for the is_friend parm of pushdecl, duplicate_decls and push_template_decl_real and the scope & tpl_header parms of xref_tag. Then many of the calls simply not mention these. I also rename push_template_decl_real to push_template_decl, deleting the original forwarding function. This'll make my later patches changing their types less intrusive. There are 2 functional changes: 1) push_template_decl requires is_friend to be correct, it doesn't go checking for a friend function (an assert is added). 2) debug_overload prints out Hidden and Using markers for the overload set. gcc/cp/ * cp-tree.h (duplicate_decls): Default is_friend to false. (xref_tag): Default tag_scope & tpl_header_p to ts_current & false. (push_template_decl_real): Default is_friend to false. Rename to ... (push_template_decl): ... here. Delete original decl. * name-lookup.h (pushdecl_namespace_level): Default is_friend to false. (pushtag): Default tag_scope to ts_current. * coroutines.cc (morph_fn_to_coro): Drop default args to xref_tag. * decl.c (start_decl): Drop default args to duplicate_decls. (start_enum): Drop default arg to pushtag & xref_tag. (start_preparsed_function): Pass DECL_FRIEND_P to push_template_decl. (grokmethod): Likewise. * friend.c (do_friend): Rename push_template_decl_real calls. * lambda.c (begin_lamnbda_type): Drop default args to xref_tag. (vla_capture_type): Likewise. * name-lookup.c (maybe_process_template_type_declaration): Rename push_template_decl_real call. (pushdecl_top_level_and_finish): Drop default arg to pushdecl_namespace_level. * pt.c (push_template_decl_real): Assert no surprising friend functions. Rename to ... (push_template_decl): ... here. Delete original function. (lookup_template_class_1): Drop default args from pushtag. (instantiate_class_template_1): Likewise. * ptree.c (debug_overload): Print hidden and using markers. * rtti.c (init_rtti_processing): Drop refault args from xref_tag. (build_dynamic_cast_1, tinfo_base_init): Likewise. * semantics.c (begin_class_definition): Drop default args to pushtag. gcc/objcp/ * objcp-decl.c (objcp_start_struct): Drop default args to xref_tag. (objcp_xref_tag): Likewise. libcc1/ * libcp1plugin.cc (supplement_binding): Drop default args to duplicate_decls. (safe_pushtag): Drop scope parm. Drop default args to pushtag. (safe_pushdecl_maybe_friend): Rename to ... (safe_pushdecl): ... here. Drop is_friend parm. Drop default args to pushdecl. (plugin_build_decl): Adjust safe_pushdecl & safe_pushtag calls. (plugin_build_constant): Adjust safe_pushdecl call.
2020-09-24c++: add testcase [PR97177]Nathan Sidwell1-0/+20
Pr97177 is the local-var duplicate of pr97171. So just adding the testcase. gcc/testsuite/ * g++.dg/template/local-var1.C: New.
2020-09-24c++: restrict test to c++>=11 [pr97171]Nathan Sidwell1-1/+1
I'd missed an important restriction on use of noexcept. Fixed thusly gcc/testsuite/ * g++.dg/template/local-fn4.C: Add target c++11
2020-09-24runtime: remove __go_ptrace on AIXClément Chigot2-2/+4
AIX ptrace syscalls doesn't have the same semantic than the glibc one. The syscall package is already handling it correctly so disable the new __go_ptrace C function for AIX. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/256777
2020-09-24libstdc++: assert that type traits are not misused with incomplete types [PR ↵Antony Polukhin6-0/+251
71579] libstdc++-v3/ChangeLog: PR libstdc++/71579 * include/std/type_traits (invoke_result, is_invocable) (is_invocable_r, is_nothrow_invocable, is_nothrow_invocable_r): Add static_asserts to make sure that the arguments of the type traits are not misused with incomplete types. * testsuite/20_util/invoke_result/incomplete_args_neg.cc: New test. * testsuite/20_util/is_invocable/incomplete_args_neg.cc: New test. * testsuite/20_util/is_invocable/incomplete_neg.cc: New test. * testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc: New test. * testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc: Check for error on incomplete type usage in trait.
2020-09-24libstdc++: Specialize ranges::__detail::__box for semiregular typesPatrick Palka2-6/+135
The class template semiregular-box<T> defined in [range.semi.wrap] is used by a number of views to accomodate non-semiregular subobjects while ensuring that the overall view remains semiregular. It provides a stand-in default constructor, copy assignment operator and move assignment operator whenever the underlying type lacks them. The wrapper derives from std::optional<T> to support default construction when T is not default constructible. It would be nice for this wrapper to essentially be a no-op when the underlying type is already semiregular, but this is currently not the case due to its use of std::optional<T>, which incurs space overhead compared to storing just T. To that end, this patch specializes the semiregular wrapper for semiregular T. Compared to the primary template, this specialization uses less space, and it allows [[no_unique_address]] to optimize away wrapped data members whose underlying type is empty and semiregular (e.g. a non-capturing lambda). This patch also applies [[no_unique_address]] to the five data members that use the wrapper. libstdc++-v3/ChangeLog: * include/std/ranges (__detail::__boxable): Split out the associated constraints of __box into here. (__detail::__box): Use the __boxable concept. Define a leaner partial specialization for semiregular types. (single_view::_M_value): Give it [[no_unique_address]]. (filter_view::_M_pred): Likewise. (transform_view::_M_fun): Likewise. (take_while_view::_M_pred): Likewise. (drop_while_view::_M_pred):: Likewise. * testsuite/std/ranges/adaptors/detail/semiregular_box.cc: New test.
2020-09-24libstdc++: Fix misnamed configure option in manualJonathan Wakely3-4/+6
libstdc++-v3/ChangeLog: * doc/xml/manual/configure.xml: Correct name of option. * doc/html/*: Regenerate.
2020-09-24arm: Add support for Neoverse N2 CPUAlex Coplan4-6/+21
This adds support for Arm's Neoverse N2 CPU to the AArch32 backend. Neoverse N2 builds AArch32 at EL0 and therefore needs support in AArch32 GCC. gcc/ChangeLog: * config/arm/arm-cpus.in (neoverse-n2): New. * config/arm/arm-tables.opt: Regenerate. * config/arm/arm-tune.md: Regenerate. * doc/invoke.texi: Document support for Neoverse N2.
2020-09-24aarch64: Add support for Neoverse N2 CPUAlex Coplan3-3/+6
This patch adds support for Arm's Neoverse N2 CPU to the AArch64 backend. gcc/ChangeLog: * config/aarch64/aarch64-cores.def: Add Neoverse N2. * config/aarch64/aarch64-tune.md: Regenerate. * doc/invoke.texi: Document AArch64 support for Neoverse N2.
2020-09-24add move CTOR to auto_vec, use auto_vec for get_loop_exit_edgesRichard Biener17-65/+33
This adds a move CTOR to auto_vec<T, 0> and makes use of a auto_vec<edge> return value for get_loop_exit_edges denoting that lifetime management of the vector is handed to the caller. The move CTOR prompted the hash_table change because it appearantly makes the copy CTOR implicitely deleted (good) and hash-table expansion of the odr_enum_map which is hash_map <nofree_string_hash, odr_enum> where odr_enum has an auto_vec<odr_enum_val, 0> member triggers this. Not sure if there's a latent bug there before this (I think we're not invoking DTORs, but we're invoking copy-CTORs). 2020-08-06 Richard Biener <rguenther@suse.de> * vec.h (auto_vec<T, 0>::auto_vec (auto_vec &&)): New move CTOR. (auto_vec<T, 0>::operator=(auto_vec &&)): Delete. * hash-table.h (hash_table::expand): Use std::move when expanding. * cfgloop.h (get_loop_exit_edges): Return auto_vec<edge>. * cfgloop.c (get_loop_exit_edges): Adjust. * cfgloopmanip.c (fix_loop_placement): Likewise. * ipa-fnsummary.c (analyze_function_body): Likewise. * ira-build.c (create_loop_tree_nodes): Likewise. (create_loop_tree_node_allocnos): Likewise. (loop_with_complex_edge_p): Likewise. * ira-color.c (ira_loop_edge_freq): Likewise. * loop-unroll.c (analyze_insns_in_loop): Likewise. * predict.c (predict_loops): Likewise. * tree-predcom.c (last_always_executed_block): Likewise. * tree-ssa-loop-ch.c (ch_base::copy_headers): Likewise. * tree-ssa-loop-im.c (store_motion_loop): Likewise. * tree-ssa-loop-ivcanon.c (loop_edge_to_cancel): Likewise. (canonicalize_loop_induction_variables): Likewise. * tree-ssa-loop-manip.c (get_loops_exits): Likewise. * tree-ssa-loop-niter.c (find_loop_niter): Likewise. (finite_loop_p): Likewise. (find_loop_niter_by_eval): Likewise. (estimate_numbers_of_iterations): Likewise. * tree-ssa-loop-prefetch.c (emit_mfence_after_loop): Likewise. (may_use_storent_in_loop_p): Likewise.
2020-09-24c++: local-decls are never member fns [PR97186]Nathan Sidwell3-8/+36
This fixes an ICE in noexcept instantiation. It was presuming functions always have template_info, but that changed with my DECL_LOCAL_DECL_P changes. Fortunately DECL_LOCAL_DECL_P fns are never member fns, so we don't need to go fishing out a this pointer. Also I realized I'd misnamed local10.C, so renaming it local-fn3.C, and while there adding the effective-target lto that David E pointed out was missing. PR c++/97186 gcc/cp/ * pt.c (maybe_instantiate_noexcept): Local externs are never member fns. gcc/testsuite/ * g++.dg/template/local10.C: Rename ... * g++.dg/template/local-fn3.C: .. here. Require lto. * g++.dg/template/local-fn4.C: New.
2020-09-24Add modref testcaseJan Hubicka1-0/+45
* gcc.dg/tree-ssa/modref-1.c: New test.
2020-09-24Add access through parameter derference tracking to modrefJan Hubicka6-122/+501
re-add tracking of accesses which was unfinished in David's patch. At the moment I only implemented tracking of the fact that access is based on derefernece of the parameter (so we track THIS pointers). Patch does not implement IPA propagation since it needs bit more work which I will post shortly: ipa-fnsummary needs to track when parameter points to local memory, summaries needs to be merged when function is inlined (because jump functions are) and propagation needs to be turned into iterative dataflow on SCC components. Patch also adds documentation of -fipa-modref and params that was left uncommited in my branch :(. Even without this change it does lead to nice increase of disambiguations for cc1plus build. Alias oracle query stats: refs_may_alias_p: 62758323 disambiguations, 72935683 queries ref_maybe_used_by_call_p: 139511 disambiguations, 63654045 queries call_may_clobber_ref_p: 23502 disambiguations, 29242 queries nonoverlapping_component_refs_p: 0 disambiguations, 37654 queries nonoverlapping_refs_since_match_p: 19417 disambiguations, 55555 must overlaps, 75721 queries aliasing_component_refs_p: 54665 disambiguations, 752449 queries TBAA oracle: 21917926 disambiguations 53054678 queries 15763411 are in alias set 0 10162238 queries asked about the same object 124 queries asked about the same alias set 0 access volatile 3681593 are dependent in the DAG 1529386 are aritificially in conflict with void * Modref stats: modref use: 8311 disambiguations, 32527 queries modref clobber: 742126 disambiguations, 1036986 queries 1987054 tbaa queries (1.916182 per modref query) 125479 base compares (0.121004 per modref query) PTA query stats: pt_solution_includes: 968314 disambiguations, 13609584 queries pt_solutions_intersect: 1019136 disambiguations, 13147139 queries So compared to https://gcc.gnu.org/pipermail/gcc-patches/2020-September/554605.html we get 41% more use disambiguations (with similar number of queries) and 8% more clobber disambiguations. For tramp3d: Alias oracle query stats: refs_may_alias_p: 2052256 disambiguations, 2312703 queries ref_maybe_used_by_call_p: 7122 disambiguations, 2089118 queries call_may_clobber_ref_p: 234 disambiguations, 234 queries nonoverlapping_component_refs_p: 0 disambiguations, 4299 queries nonoverlapping_refs_since_match_p: 329 disambiguations, 10200 must overlaps, 10616 queries aliasing_component_refs_p: 857 disambiguations, 34555 queries TBAA oracle: 885546 disambiguations 1677080 queries 132105 are in alias set 0 469030 queries asked about the same object 0 queries asked about the same alias set 0 access volatile 190084 are dependent in the DAG 315 are aritificially in conflict with void * Modref stats: modref use: 426 disambiguations, 1881 queries modref clobber: 10042 disambiguations, 16202 queries 19405 tbaa queries (1.197692 per modref query) 2775 base compares (0.171275 per modref query) PTA query stats: pt_solution_includes: 313908 disambiguations, 526183 queries pt_solutions_intersect: 130510 disambiguations, 416084 queries Here uses decrease by 4 disambiguations and clobber improve by 3.5%. I think the difference is caused by fact that gcc has much more alias set 0 accesses originating from gimple and tree unions as I mentioned in original mail. After pushing out the IPA propagation I will re-add code to track offsets and sizes that further improve disambiguation. On tramp3d it enables a lot of DSE for structure fields not acessed by uninlined function. gcc/ * doc/invoke.texi: Document -fipa-modref, ipa-modref-max-bases, ipa-modref-max-refs, ipa-modref-max-accesses, ipa-modref-max-tests. * ipa-modref-tree.c (test_insert_search_collapse): Update. (test_merge): Update. (gt_ggc_mx): New function. * ipa-modref-tree.h (struct modref_access_node): New structure. (struct modref_ref_node): Add every_access and accesses array. (modref_ref_node::modref_ref_node): Update ctor. (modref_ref_node::search): New member function. (modref_ref_node::collapse): New member function. (modref_ref_node::insert_access): New member function. (modref_base_node::insert_ref): Do not collapse base if ref is 0. (modref_base_node::collapse): Copllapse also refs. (modref_tree): Add accesses. (modref_tree::modref_tree): Initialize max_accesses. (modref_tree::insert): Add access parameter. (modref_tree::cleanup): New member function. (modref_tree::merge): Add parm_map; merge accesses. (modref_tree::copy_from): New member function. (modref_tree::create_ggc): Add max_accesses. * ipa-modref.c (dump_access): New function. (dump_records): Dump accesses. (dump_lto_records): Dump accesses. (get_access): New function. (record_access): Record access. (record_access_lto): Record access. (analyze_call): Compute parm_map. (analyze_function): Update construction of modref records. (modref_summaries::duplicate): Likewise; use copy_from. (write_modref_records): Stream accesses. (read_modref_records): Sream accesses. (pass_ipa_modref::execute): Update call of merge. * params.opt (-param=modref-max-accesses): New. * tree-ssa-alias.c (alias_stats): Add modref_baseptr_tests. (dump_alias_stats): Update. (base_may_alias_with_dereference_p): New function. (modref_may_conflict): Check accesses. (ref_maybe_used_by_call_p_1): Update call to modref_may_conflict. (call_may_clobber_ref_p_1): Update call to modref_may_conflict.
2020-09-24[testsuite, nvptx] Fix gcc.dg/tls/thr-cse-1.cTom de Vries1-1/+4
With nvptx, we run into: ... FAIL: gcc.dg/tls/thr-cse-1.c scan-assembler-not \ emutls_get_address.*emutls_get_address.* ... because the nvptx assembly looks like: ... call (%value_in), __emutls_get_address, (%out_arg1); ... // BEGIN GLOBAL FUNCTION DECL: __emutls_get_address .extern .func (.param.u64 %value_out) __emutls_get_address (.param.u64 %in_ar0); ... Fix this by checking the slim final dump instead, where we have just: ... 12: r35:DI=call [`__emutls_get_address'] argc:0 ... gcc/testsuite/ChangeLog: 2020-09-24 Tom de Vries <tdevries@suse.de> * gcc.dg/tls/thr-cse-1.c: Scan final dump instead of assembly for nvptx.
2020-09-24[testsuite] Scan final instead of asm in independent-cloneids-1.cTom de Vries1-9/+9
When running test-case gcc.dg/independent-cloneids-1.c for nvptx, we get: ... FAIL: scan-assembler-times (?n)^_*bar[.$_]constprop[.$_]0: 1 FAIL: scan-assembler-times (?n)^_*bar[.$_]constprop[.$_]1: 1 FAIL: scan-assembler-times (?n)^_*bar[.$_]constprop[.$_]2: 1 FAIL: scan-assembler-times (?n)^_*foo[.$_]constprop[.$_]0: 1 FAIL: scan-assembler-times (?n)^_*foo[.$_]constprop[.$_]1: 1 FAIL: scan-assembler-times (?n)^_*foo[.$_]constprop[.$_]2: 1 ... The test expects to find something like: ... bar.constprop.0: ... but instead on nvptx we have: ... .func (.param.u32 %value_out) bar$constprop$0 ... Fix this by rewriting the scans to use the final dump instead. Tested on x86_64. gcc/testsuite/ChangeLog: 2020-09-24 Tom de Vries <tdevries@suse.de> * gcc.dg/independent-cloneids-1.c: Use scan-rtl-dump instead of scan-assembler.
2020-09-24target/97192 - new testcase for fixed PRRichard Biener1-0/+16
This adds another testcase for the PR97085 fix. 2020-09-24 Richard Biener <rguenther@suse.de> PR tree-optimization/97085 * gcc.dg/pr97192.c: New testcase.
2020-09-24This patch fixes PR96495 - frees result components outside loop.Paul Thomas2-24/+95
2020-24-09 Paul Thomas <pault@gcc.gnu.org> gcc/fortran PR fortran/96495 * trans-expr.c (gfc_conv_procedure_call): Take the deallocation of allocatable result components of a scalar result outside the scalarization loop. Find and use the stored result. gcc/testsuite/ PR fortran/96495 * gfortran.dg/alloc_comp_result_2.f90 : New test.
2020-09-24[testsuite, nvptx] Fix string matching in gcc.dg/pr87314-1.cTom de Vries1-1/+3
with nvptx we run into: ... FAIL: gcc.dg/pr87314-1.c scan-assembler hellooo ... The required string is part of the assembly, just in a different format than expected: ... .const .align 1 .u8 $LC0[12] = { 104, 101, 108, 108, 111, 111, 111, 111, 98, 121, 101, 0 }; ... Fix this by adding an nvptx-specific scan-assembler directive. Tested on nvptx and x86_64. gcc/testsuite/ChangeLog: 2020-09-24 Tom de Vries <tdevries@suse.de> * gcc.dg/pr87314-1.c: Add nvptx-specific scan-assembler directive.
2020-09-24arm: Add a couple of extra stack-protector testsRichard Sandiford2-0/+29
These tests were inspired by corresponding aarch64 ones. They already pass. gcc/testsuite/ * gcc.target/arm/stack-protector-5.c: New test. * gcc.target/arm/stack-protector-6.c: Likewise.
2020-09-24arm: Fix canary address calculation for non-PICRichard Sandiford3-2/+46
For non-PIC, the stack protector patterns did: rtx mem = XEXP (force_const_mem (SImode, operands[1]), 0); emit_move_insn (operands[2], mem); Here, operands[1] is the address of the canary (&__stack_chk_guard) and operands[2] is the register that we want to move that address into. However, the code above instead sets operands[2] to the address of a constant pool entry that contains &__stack_chk_guard, rather than to &__stack_chk_guard itself. The sequence therefore does one less pointer indirection than it should. The net effect was to use &__stack_chk_guard for stack-smash detection, instead of using __stack_chk_guard itself. gcc/ * config/arm/arm.md (*stack_protect_combined_set_insn): For non-PIC, load the address of the canary rather than the address of the constant pool entry that points to it. (*stack_protect_combined_test_insn): Likewise. gcc/testsuite/ * gcc.target/arm/stack-protector-3.c: New test. * gcc.target/arm/stack-protector-4.c: Likewise.
2020-09-24tree-optimization/97085 - fold some trivial bool vector ?:Richard Biener2-0/+24
The following aovids the ICE in the testcase by doing some additional simplification of VEC_COND_EXPRs for VECTOR_BOOLEAN_TYPE_P which we don't really expect, esp. when they are not classical vectors, thus AVX512 or SVE masks. 2020-09-24 Richard Biener <rguenther@suse.de> PR tree-optimization/97085 * match.pd (mask ? { false,..} : { true, ..} -> ~mask): New. * gcc.dg/vect/pr97085.c: New testcase.
2020-09-24[testsuite] Require non_strict_align in pr94600-{1,3}.cTom de Vries2-4/+4
With the nvptx target, we run into: ... FAIL: gcc.dg/pr94600-1.c scan-rtl-dump-times final "\\(mem/v" 6 FAIL: gcc.dg/pr94600-1.c scan-rtl-dump-times final "\\(set \\(mem/v" 6 FAIL: gcc.dg/pr94600-3.c scan-rtl-dump-times final "\\(mem/v" 1 FAIL: gcc.dg/pr94600-3.c scan-rtl-dump-times final "\\(set \\(mem/v" 1 ... The scans attempt to check for volatile stores, but on nvptx we have memcpy instead. This is due to nvptx being a STRICT_ALIGNMENT target, which has the effect that the TYPE_MODE for the store target is set to BKLmode in compute_record_mode. Fix the FAILs by requiring effective target non_strict_align. Tested on nvptx. gcc/testsuite/ChangeLog: 2020-09-24 Tom de Vries <tdevries@suse.de> * gcc.dg/pr94600-1.c: Require effective target non_strict_align for scan-rtl-dump-times. * gcc.dg/pr94600-3.c: Same.
2020-09-24Fix memory allocations in ipa-modref.Jan Hubicka2-42/+65
Pair ggc_delete with ggc_alloc_no_dtor. I copy same scheme as used by Martin in ipa-fnsummary, that is creating a static member function create_ggc hidding the ugly bits and using it in ipa-modref.c. I also noticed that modref-tree leaks memory on destruction/collapse method and fixed that. Bootstrapped/regtested x86_64-linux. gcc/ChangeLog: 2020-09-24 Jan Hubicka <hubicka@ucw.cz> * ipa-modref-tree.h (modref_base::collapse): Release memory. (modref_tree::create_ggc): New member function. (modref_tree::colapse): Release memory. (modref_tree::~modref_tree): New destructor. * ipa-modref.c (modref_summaries::create_ggc): New function. (analyze_function): Use create_ggc. (modref_summaries::duplicate): Likewise. (read_modref_records): Likewise. (modref_read): Likewise.
2020-09-24[testsuite] Check target alias in builtin-has-attribute-3.cTom de Vries1-1/+1
When running test-case c-c++-common/builtin-has-attribute-3.c on nvptx, I get: ... FAIL: c-c++-common/builtin-has-attribute-3.c -Wc++-compat \ (test for excess errors) Excess errors: src/gcc/testsuite/c-c++-common/builtin-has-attribute-3.c:33:33: error: \ alias definitions not supported in this configuration ... Fix this by adding -DSKIP_ALIAS to the compilation options for effective target ! alias. Tested on nvptx. gcc/testsuite/ChangeLog: * c-c++-common/builtin-has-attribute-3.c: Compile with -DSKIP_ALIAS for effective target ! alias.
2020-09-24test: Adjust case p9-vec-length-full-6.c [PR97075]Kewen Lin1-5/+4
The commit r11-3230 brings a nice improvement to use full vectors instead of partial vectors when available. This patch is to fix the test failures on p9-vec-length-full-6.c, where 64bit/32bit pairs are able to use full vector instead. Bootstrapped/regtested on powerpc64le-linux-gnu P9. gcc/testsuite/ChangeLog: PR tree-optimization/97075 * gcc.target/powerpc/p9-vec-length-full-6.c: Adjust.
2020-09-24Re: [RS6000] Power10 libffi fixesAlan Modra1-1/+3
Adding a nop broke ffi_closure_LINUX64! * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Correct location of .Lret.