aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-18[OpenMP, gimplifier] 'inform' after 'error' diagnosticThomas Schwinge22-53/+54
This is not a thorough review of the code, just a few cases I noticed while scanning 'gcc/gimplify.c' for "enclosing". gcc/ * gimplify.c (omp_notice_threadprivate_variable) (omp_default_clause, omp_notice_variable): 'inform' after 'error' diagnostic. Adjust all users. gcc/testsuite/ * c-c++-common/gomp/default-1.c: Update. * c-c++-common/gomp/defaultmap-3.c: Likewise. * c-c++-common/gomp/order-4.c: Likewise. * g++.dg/gomp/parallel-2.C: Likewise. * g++.dg/gomp/predetermined-1.C: Likewise. * g++.dg/gomp/sharing-1.C: Likewise. * gcc.dg/gomp/appendix-a/a.24.1.c: Likewise. * gcc.dg/gomp/parallel-2.c: Likewise. * gcc.dg/gomp/pr44085.c: Likewise. * gcc.dg/gomp/sharing-1.c: Likewise. * gcc.dg/gomp/vla-1.c: Likewise. * gfortran.dg/gomp/appendix-a/a.24.1.f90: Likewise. * gfortran.dg/gomp/crayptr3.f90: Likewise. * gfortran.dg/gomp/pr33439.f90: Likewise. * gfortran.dg/gomp/pr44036-1.f90: Likewise. * gfortran.dg/gomp/pr44085.f90: Likewise. * gfortran.dg/gomp/pr44536.f90: Likewise. * gfortran.dg/gomp/pr94672.f90: Likewise. * gfortran.dg/gomp/sharing-1.f90: Likewise. * gfortran.dg/gomp/sharing-2.f90: Likewise. * gfortran.dg/gomp/sharing-3.f90: Likewise.
2020-06-18Add 'dg-do run' to 'libgomp.fortran/use_device_ptr-optional-3.f90' [PR94848]Thomas Schwinge1-0/+1
Fix-up for r279858/commit f760c0c77fe350616da9dbeaea16442b0acfb09c "Fortran] OpenMP/OpenACC – fix more issues with OPTIONAL". With offloading enabled, we then saw: PASS: libgomp.fortran/use_device_ptr-optional-3.f90 -O0 (test for excess errors) PASS: libgomp.fortran/use_device_ptr-optional-3.f90 -O0 execution test PASS: libgomp.fortran/use_device_ptr-optional-3.f90 -O1 (test for excess errors) PASS: libgomp.fortran/use_device_ptr-optional-3.f90 -O1 execution test FAIL: libgomp.fortran/use_device_ptr-optional-3.f90 -O2 (test for excess errors) UNRESOLVED: libgomp.fortran/use_device_ptr-optional-3.f90 -O2 compilation failed to produce executable FAIL: libgomp.fortran/use_device_ptr-optional-3.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions (test for excess errors) UNRESOLVED: libgomp.fortran/use_device_ptr-optional-3.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel-loops -ftracer -finline-functions compilation failed to produce executable FAIL: libgomp.fortran/use_device_ptr-optional-3.f90 -O3 -g (test for excess errors) UNRESOLVED: libgomp.fortran/use_device_ptr-optional-3.f90 -O3 -g compilation failed to produce executable FAIL: libgomp.fortran/use_device_ptr-optional-3.f90 -Os (test for excess errors) UNRESOLVED: libgomp.fortran/use_device_ptr-optional-3.f90 -Os compilation failed to produce executable ... due to: /tmp/cciVc43I.o:(.gnu.offload_vars+0x10): undefined reference to `A.12.4064' [...] ..., but after the recent PR94848, PR95551 changes, that problem is now gone. libgomp/ PR lto/94848 * testsuite/libgomp.fortran/use_device_ptr-optional-3.f90: Add 'dg-do run'.
2020-06-18hurd: libgcc unwinding support over signal trampolinesSamuel Thibault2-1/+114
libgcc/ * config.host (md_unwind_header) <i[34567]86-*-gnu*>: Set to 'i386/gnu-unwind.h' * config/i386/gnu-unwind.h: New file. Signed-off-by: Thomas Schwinge <thomas@codesourcery.com>
2020-06-17libstdc++: Avoid stack overflow in std::vector (PR 94540)Jonathan Wakely6-16/+200
The std::__uninitialized_default_n algorithm used by std::vector creates an initial object as a local variable then copies that into the destination range. If the object is too large for the stack this crashes. We should create the first object directly into the destination and then copy it from there. This doesn't fix the bug for C++98, because in that case the initial value is created as a default argument of the vector constructor i.e. in the user's code, not inside libstdc++. We can't prevent that. PR libstdc++/94540 * include/bits/stl_uninitialized.h (__uninitialized_default_1<true>): Construct the first value at *__first instead of on the stack. (__uninitialized_default_n_1<true>): Likewise. Improve comments on several of the non-standard algorithms. * testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc: New test. * testsuite/23_containers/vector/cons/94540.cc: New test.
2020-06-17[HSA] Avoid ICE when "HSA does not implement indirect calls"Thomas Schwinge2-4/+29
Made apparent by recent commit dc703151d4f4560e647649506d5b4ceb0ee11e90 "openmp: Implement discovery of implicit declare target to clauses": +FAIL: libgomp.c/target-39.c (internal compiler error) +FAIL: libgomp.c/target-39.c (test for excess errors) +UNRESOLVED: libgomp.c/target-39.c compilation failed to produce executable This is in a '--enable-offload-targets=[...],hsa' build, with '-foffload=hsa' enabled (by default). during GIMPLE pass: hsagen source-gcc/libgomp/testsuite/libgomp.c/target-39.c: In function ‘main._omp_fn.0.hsa.0’: source-gcc/libgomp/testsuite/libgomp.c/target-39.c:23:11: internal compiler error: Segmentation fault 23 | #pragma omp target map(from:err) | ^~~ [...] GDB: Program received signal SIGSEGV, Segmentation fault. fndecl_built_in_p (node=0x0, name=BUILT_IN_PREFETCH) at [...]/source-gcc/gcc/tree.h:6267 6267 return (fndecl_built_in_p (node, BUILT_IN_NORMAL) (gdb) bt #0 fndecl_built_in_p (node=0x0, name=BUILT_IN_PREFETCH) at [...]/source-gcc/gcc/tree.h:6267 #1 0x0000000000b19739 in gen_hsa_insns_for_call (stmt=stmt@entry=0x7ffff693b200, hbb=hbb@entry=0x2b152c0) at [...]/source-gcc/gcc/hsa-gen.c:5304 #2 0x0000000000b1aca7 in gen_hsa_insns_for_gimple_stmt (stmt=0x7ffff693b200, hbb=hbb@entry=0x2b152c0) at [...]/source-gcc/gcc/hsa-gen.c:5770 #3 0x0000000000b1bd21 in gen_body_from_gimple () at [...]/source-gcc/gcc/hsa-gen.c:5999 #4 0x0000000000b1dbd2 in generate_hsa (kernel=<optimized out>) at [...]/source-gcc/gcc/hsa-gen.c:6596 #5 0x0000000000b1de66 in (anonymous namespace)::pass_gen_hsail::execute (this=0x2a2aac0) at [...]/source-gcc/gcc/hsa-gen.c:6680 #6 0x0000000000d06f90 in execute_one_pass (pass=pass@entry=0x2a2aac0) at [...]/source-gcc/gcc/passes.c:2502 [...] (gdb) up #1 0x0000000000b19739 in gen_hsa_insns_for_call (stmt=stmt@entry=0x7ffff693b200, hbb=hbb@entry=0x2b152c0) at /home/thomas/tmp/source/gcc/build/track-slim-omp/source-gcc/gcc/hsa-gen.c:5304 5304 if (fndecl_built_in_p (function_decl, BUILT_IN_PREFETCH)) (gdb) print function_decl $1 = (tree) 0x0 (gdb) list 5299 if (!gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) 5300 { 5301 tree function_decl = gimple_call_fndecl (stmt); 5302 /* Prefetch pass can create type-mismatching prefetch builtin calls which 5303 fail the gimple_call_builtin_p test above. Handle them here. */ 5304 if (fndecl_built_in_p (function_decl, BUILT_IN_PREFETCH)) 5305 return; 5306 5307 if (function_decl == NULL_TREE) 5308 { The problem is present already since 2016-11-23 commit 56b1c60e412fcf1245b4780871553cbdebb956a3 (r242761) "Merge from HSA branch to trunk", and the fix obvious enough. gcc/ * hsa-gen.c (gen_hsa_insns_for_call): Move 'function_decl == NULL_TREE' check earlier. gcc/testsuite/ * c-c++-common/gomp/hsa-indirect-call-1.c: New file.
2020-06-17Fix typo in attribute access example.Forrest Timour1-1/+1
Fix typo in documentation example of access function attribute where the ref-indices should be one-indexed instead of zero-indexed. gcc/ChangeLog: * doc/extend.texi (attribute access): Fix a typo.
2020-06-17libstdc++: Fix tests for uninitialized_value_construct_nJonathan Wakely2-46/+12
In my recent r11-1460 commit the tests had been "improved" before commit, and no longer exercised the code paths changed by the patch. This restores what I originally tested, so that the tests fail before the r11-1460 change and pass after it. * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc: Replace Value type with int so trivial code path is used. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: Likewise.
2020-06-17libstdc++: Handle non-integral sizes in std::uninitialized_fill_nJonathan Wakely4-9/+224
The std::uninitialized_fill_n algorithm uses sd::fill_n for trivial types, but that algorithm has a stronger requirement that the Size parameter is convertible to an integral type. As the new test shows, there are types which are valid for std::uninitialized_fill_n but which produce a different result when converted to an integral type, or cannot be converted at all. Only use the std::fill_n optimization when the Size type is already an integral type. The std::__uninitialized_default_n extension has the same problem, and so does C++17's std::uninitialized_value_construct_n which uses it. * include/bits/stl_uninitialized.h (uninitialized_fill_n): Only use std::fill_n when the size is an integral type. (__uninitialized_default_n): Likewise. * testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc: New test. * testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc: New test.
2020-06-17c++: Fix bogus "does not declare anything" warning (PR 66159)Jonathan Wakely2-2/+10
G++ gives a bogus warning for 'struct A; using B = struct ::A;' complaining that the elaborated-type-specifier doesn't declare anything. That's true, but it's not trying to declare struct ::A, just refer to it unambiguously. Do not emit the warning unless we're actually parsing a declaration. gcc/cp/ChangeLog: PR c++/66159 * parser.c (cp_parser_elaborated_type_specifier): Do not warn unless in a declaration. gcc/testsuite/ChangeLog: PR c++/66159 * g++.dg/warn/forward-inner.C: Check alias-declaration using elaborated-type-specifier.
2020-06-17vect: CSE for bump and offset in strided load/store operations.Kaipeng Zhou2-12/+22
Every time "vect_get_strided_load_store_ops" is called, new bump and offset variables and a series of stmts are created. And IVOPTs is not able to eliminate them. The patch use "cse_and_gimplify_to_preheader" to CSE them. 2020-06-17 Bin Cheng <bin.cheng@linux.alibaba.com> Kaipeng Zhou <zhoukaipeng3@huawei.com> PR tree-optimization/95199 * tree-vect-stmts.c: Eliminate common stmts for bump and offset in strided load/store operations and remove redundant code. 2020-06-17 Bin Cheng <bin.cheng@linux.alibaba.com> Kaipeng Zhou <zhoukaipeng3@huawei.com> PR tree-optimization/95199 * gcc.target/aarch64/sve/pr95199.c: New test.
2020-06-17c++: implicit operator== adjustments from P2002.Jason Merrill4-103/+128
P2002R1, adopted at the February C++ meeting, made several refinements to the wording for operator<=>. This implements clarifications in how the implicit operator== is declared: as a duplicate of the operator<=>, with only the return type and name changed. To that end I factored out the declaration copying from build_clone. gcc/cp/ChangeLog: * cp-tree.h (copy_fndecl_with_name): Declare. * class.c (copy_fndecl_with_name): Split out from... (build_clone): ...here. (add_implicitly_declared_members): Add op== to TYPE_FIELDS. * method.c (implicitly_declare_fn): Use copy_fndecl_with_name. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/spaceship-synth9.C: New test.
2020-06-17c++: Add test for C++20 NB comment CA107.Jason Merrill1-0/+33
We already implemented this, but it's good to have a test. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-ca107.C: New test.
2020-06-17c++: Fix consteval operator handling.Jason Merrill2-1/+12
We were crashing trying to find the CALL_EXPR in the result of a call to a consteval operator. gcc/cp/ChangeLog: * call.c (build_new_op_1): Don't look for a CALL_EXPR when calling a consteval function. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/consteval17.C: New test.
2020-06-17c++: Treat in-class default/delete as definitions.Jason Merrill5-16/+37
We were complaining about a constrained defaulted non-template friend in a template class because funcdef_flag wasn't set. grokdeclarator would set it for default/delete, but grokfield wasn't passing the 'initialized' values needed. Fixing that revealed some errors in existing tests that we weren't diagnosing. Since we accepted them for so long, I'm reducing the error to a pedwarn to ease compiler upgrade. gcc/cp/ChangeLog: * decl2.c (grokfield): Pass SD_DEFAULTED and SD_DELETED. * decl.c (duplicate_decls): Reduce error for delete after earlier declaration to pedwarn. gcc/testsuite/ChangeLog: * g++.dg/cpp0x/pr62101.C: Expect error. * g++.dg/cpp0x/pr80259.C: Expect error. * g++.dg/cpp2a/concepts-friend8.C: New test.
2020-06-17c-family: check qualifiers of arguments to __atomic built-ins (PR 95378)Jonathan Wakely2-0/+152
Currently the __atomic_{load,store,exchange,compare_exchange} built-ins will happily store values through pointers to const, or use pointers to volatile as the input and output arguments. This patch ensures that any pointer that will be written through does not point to a const object, and only the pointer to the atomic variable can be volatile. This differs slightly from Clang, which allows the third argument to __atomic_exchange (the one that is used to return the old value) to be volatile if and only if the first argument is volatile. That doesn't seem useful. For C++ emit errors, but for C use pedwarns that are controlled by -Wincompatible-pointer-types. gcc/c-family/ChangeLog: * c-common.c (get_atomic_generic_size): Check cv-qualifiers in pointer arguments. gcc/testsuite/ChangeLog: * c-c++-common/pr95378.c: New test.
2020-06-17recog: Tweak insn_gen_fn::operator() definitionRichard Sandiford2-2/+7
Fixes a “left operand of comma has no effect” warning that some were seeing. Also fixes a spurious ellipsis that Jonathan Wakely pointed out. 2020-06-17 Richard Sandiford <richard.sandiford@arm.com> gcc/ * coretypes.h (first_type): New alias template. * recog.h (insn_gen_fn::operator()): Use it instead of a decltype. Remove spurious “...” and split the function type out into a typedef.
2020-06-17IBM Z: Prevent mach optimization on doloop patternsAndreas Krebbel2-2/+30
s390_fix_long_loop_prediction is used in machine dependent reorg. There we use single_set to distingiush between conditional jumps and branch on count patterns. However, single_set returns a non-NULL value also for PARALLELs in case one of the SETs is dead. 2020-06-17 Andreas Krebbel <krebbel@linux.ibm.com> gcc/ * config/s390/s390.c (s390_fix_long_loop_prediction): Exit early for PARALLELs. gcc/testsuite/ * gcc.target/s390/20200617.c: New test.
2020-06-17Use SLP_TREE_VECTYPE consistentlyRichard Biener2-10/+17
This assigns SLP_TREE_VECTYPE to all SLP nodes and uses it when analyzing def operands. It does not deal with mismatches between SLP_TREE_VECTYPE and STMT_VINFO_VECTYPE yet - those cases are still rejected until I get to clean up the interaction with data reference groups. 2020-06-17 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_build_slp_tree_1): Set the passed in *vectype parameter. (vect_build_slp_tree_2): Set SLP_TREE_VECTYPE from what vect_build_slp_tree_1 computed. (vect_analyze_slp_instance): Set SLP_TREE_VECTYPE. (vect_slp_analyze_node_operations_1): Use the SLP node vector type. (vect_schedule_slp_instance): Likewise. * tree-vect-stmts.c (vect_is_simple_use): Take the vector type from SLP_TREE_VECTYPE.
2020-06-17c++: ICE with IMPLICIT_CONV_EXPR in array subscript [PR95508]Marek Polacek4-1/+33
Since r10-7096 convert_like, when called in a template, creates an IMPLICIT_CONV_EXPR when we're converting to/from array type. In this test, we have e[f], and we're converting f (of type class A) to int, so convert_like in build_new_op_1 created the IMPLICIT_CONV_EXPR that got into cp_build_array_ref which calls maybe_constant_value. My patch above failed to adjust this spot to call fold_non_dependent_expr instead, which can handle codes like I_C_E in a template. Fixed by using a new function maybe_fold_non_dependent_expr, which, if the expr can't be evaluated to a constant, returns the original expression. gcc/cp/ChangeLog: PR c++/95508 * constexpr.c (maybe_fold_non_dependent_expr): New. * cp-tree.h (maybe_fold_non_dependent_expr): Declare. * typeck.c (cp_build_array_ref): Call maybe_fold_non_dependent_expr instead of maybe_constant_value. gcc/testsuite/ChangeLog: PR c++/95508 * g++.dg/template/conv16.C: New test.
2020-06-17Fix use of inaccessible member in pr85503.C [PR95716]Patrick Palka1-0/+1
The recent PR41437 fix exposed a latent use of an inaccessible member in the below testcase. gcc/testsuite/ChangeLog: PR testsuite/95716 * g++.dg/ext/pr85503.C: Give ai::cv public access.
2020-06-17tree-optimization/95717 - fix SSA update for vectorizer epilogueRichard Biener2-4/+16
This fixes yet another issue with the custom SSA updating in the vectorizer when we copy from the non-if-converted loop. We must not mess with current defs before we updated the BB copies. 2020-06-17 Richard Biener <rguenther@suse.de> PR tree-optimization/95717 * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Move BB SSA updating before exit/latch PHI current def copying. * g++.dg/torture/pr95717.C: New testcase.
2020-06-17testsuite: clean up .gcov files in test-suite.Martin Liska2-2/+2
gcc/testsuite/ChangeLog: PR testsuite/95720 * gcc.misc-tests/gcov-pr94029.c: Remove not needed remove-gcda. * lib/gcov.exp: Delete properly .gcov files.
2020-06-17Lower VEC_COND_EXPR into internal functions.Martin Liska16-211/+441
gcc/ChangeLog: * Makefile.in: Add new file. * expr.c (expand_expr_real_2): Add gcc_unreachable as we should not meet this condition. (do_store_flag): Likewise. * gimplify.c (gimplify_expr): Gimplify first argument of VEC_COND_EXPR to be a SSA name. * internal-fn.c (vec_cond_mask_direct): New. (vec_cond_direct): Likewise. (vec_condu_direct): Likewise. (vec_condeq_direct): Likewise. (expand_vect_cond_optab_fn): New. (expand_vec_cond_optab_fn): Likewise. (expand_vec_condu_optab_fn): Likewise. (expand_vec_condeq_optab_fn): Likewise. (expand_vect_cond_mask_optab_fn): Likewise. (expand_vec_cond_mask_optab_fn): Likewise. (direct_vec_cond_mask_optab_supported_p): Likewise. (direct_vec_cond_optab_supported_p): Likewise. (direct_vec_condu_optab_supported_p): Likewise. (direct_vec_condeq_optab_supported_p): Likewise. * internal-fn.def (VCOND): New OPTAB. (VCONDU): Likewise. (VCONDEQ): Likewise. (VCOND_MASK): Likewise. * optabs.c (get_rtx_code): Make it global. (expand_vec_cond_mask_expr): Removed. (expand_vec_cond_expr): Removed. * optabs.h (expand_vec_cond_expr): Likewise. (vector_compare_rtx): Make it global. * passes.def: Add new pass_gimple_isel pass. * tree-cfg.c (verify_gimple_assign_ternary): Add check for VEC_COND_EXPR about first argument. * tree-pass.h (make_pass_gimple_isel): New. * tree-ssa-forwprop.c (pass_forwprop::execute): Prevent propagation of the first argument of a VEC_COND_EXPR. * tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as first argument of a VEC_COND_EXPR. (optimize_vec_cond_expr): Likewise. * tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME for a first argument of created VEC_COND_EXPR. (expand_vector_condition): Fix coding style. * tree-vect-stmts.c (vectorizable_condition): Gimplify first argument. * gimple-isel.cc: New file. gcc/testsuite/ChangeLog: * g++.dg/vect/vec-cond-expr-eh.C: New test.
2020-06-17gcc-changelog: Support 'Backported from master'.Martin Liska5-10/+80
contrib/ChangeLog: * gcc-changelog/git_commit.py: Print 'Backported from master' heading to backported commits. * gcc-changelog/test_email.py: Test it. * gcc-changelog/test_patches.txt: Add new patch. * gcc-changelog/git_repository.py: Add commit_to_date hook. * gcc-changelog/git_email.py: Add fuzzy implementation of commit_to_date_hook.
2020-06-17amdgcn: Switch to HSACO v3 binary formatAndrew Stubbs7-518/+121
This upgrades the compiler to emit HSA Code Object v3 binaries. This means changing the assembler directives, and linker command line options. The gcn-run and libgomp loaders need corresponding alterations. The relocations no longer need to be fixed up manually, and the kernel symbol names have changed slightly. This move makes the binaries compatible with the new rocgdb from ROCm 3.5. 2020-06-17 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text". (BSS_SECTION_ASM_OP): Use ".bss". (ASM_SPEC): Remove "-mattr=-code-object-v3". (LINK_SPEC): Add "--export-dynamic". * config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with PROCESSOR_VEGA10 and PROCESSOR_VEGA20. * config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant. (load_image): Remove obsolete relocation handling. Add ".kd" suffix to the symbol names. * config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62. (gcn_option_override): Update gcn_isa test. (gcn_kernel_arg_types): Update all the assembler directives. Remove the obsolete options. (gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage. (gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and PROCESSOR_VEGA20. (output_file_start): Rework assembler file header. (gcn_hsa_declare_function_name): Rework kernel metadata. * config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16. * config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum. (PROCESSOR_VEGA10): New enum value. (PROCESSOR_VEGA20): New enum value. libgomp/ * plugin/plugin-gcn.c (init_environment_variables): Use ".so.1" variant for HSA_RUNTIME_LIB name. (find_executable_symbol_1): Delete. (find_executable_symbol): Delete. (init_kernel_properties): Add ".kd" suffix to symbol names. (find_load_offset): Delete. (create_and_finalize_hsa_program): Remove relocation handling.
2020-06-17gcov*: collapse lisence header to 2 lines in --version.Martin Liska3-9/+6
gcc/ChangeLog: * gcov-dump.c (print_version): Collapse lisence header to 2 lines in --version. * gcov-tool.c (print_version): Likewise. * gcov.c (print_version): Likewise.
2020-06-17[Ada] Add early return to Apply_Universal_Integer_Attribute_ChecksEric Botcazou1-0/+5
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do anything when the type of the node is already Universal_Integer.
2020-06-17[Ada] ACATS 4.1H - BA12018 - Missed errors for private withArnaud Charlet1-4/+8
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch10.adb (Expand_With_Clause): Add missing handling of N_Generic_Subprogram_Declaration, N_Subprogram_Declaration, N_Subprogram_Body.
2020-06-17[Ada] Additional legality rule for indexing operation for derived typeEd Schonberg1-2/+34
2020-06-17 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb: (Check_Inherited_Indexing): Check that a type derived from an indexable container type cannot specify an indexing aspect if the same aspect is not specified for the parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a specified indexing aspect for a derived type is confirming.
2020-06-17[Ada] Nested subprograms in protected subprograms improperly handled in ↵Gary Dismukes1-0/+29
GNAT-LLVM 2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch9.adb (Build_Protected_Subp_Specification): Add ??? comment about the flag Has_Nested_Subprogram not being set here. (Expand_N_Protected_Body): If the original body for a protected subprogram has the flag Has_Nested_Subprogram set, then set that flag on the new unprotected subprogram body that's created for it, and reset the Scope fields of its top level declarations, which have been effectively taken from the original protected subprogram body. Add ??? comment about unclear testing of Corresponding_Spec.
2020-06-17[Ada] Ada2020: AI12-0279 more dispatching points with aspect YieldJavier Miranda11-25/+320
2020-06-17 Javier Miranda <miranda@adacore.com> gcc/ada/ * aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean aspect, and update the Is_Representation_Aspect, Aspect_Names, and Aspect_Delay arrays. * einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New subprograms. * exp_ch6.adb (Add_Return, Expand_Non_Function_Return, Expand_Simple_Function_Return): Add calls to Yield. * exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement): Add calls to Yield. * rtsfind.ads (RE_Yield): Adding support to generate calls to the runtime service Ada.Dispatching.Yield * sem_ch13.adb (Analyze_Aspect_Yield): New subprogram. * sem_ch3.adb (Derive_Subprogram): Inherit attribute Has_Yield_Aspect. * sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency of Has_Yield in the actual subprogram of a generic instantiation. * sem_disp.adb (Check_Dispatching_Operation): Check that if the Yield aspect is specified for a dispatching subprogram that inherits the aspect, the specified value shall be confirming. * sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that the implementation kind By_Protected_Procedure cannot be applied to a procedure that has aspect Yield.
2020-06-17[Ada] Fix incorrect operand sharing after expansionEric Botcazou1-7/+6
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of the original right operand with the relocated version.
2020-06-17[Ada] Crash in tagged type constructor with task componentsJavier Miranda4-14/+186
2020-06-17 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram. (Needs_BIP_Task_Actuals): Add support for the subprogram type internally generated for dispatching calls. * exp_disp.adb (Expand_Dispatching_Call): Adding code to explicitly duplicate the extra formals of the target subprogram. * freeze.adb (Check_Extra_Formals): New subprogram. (Freeze_Subprogram): Fix decoration of Extra_Formals. * sem_ch3.adb (Derive_Subprogram): Fix decoration of Extra_Formals.
2020-06-17[Ada] Do not give "bad indentation" error inside a declare_expressionBob Duff3-15/+29
2020-06-17 Bob Duff <duff@adacore.com> gcc/ada/ * par.adb (P_Basic_Declarative_Items): Update comment about Declare_Expression. * par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression flag, and if True, skip the call to Style.Check_Indentation. * par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
2020-06-17[Ada] Improve error message on anonymous access parameter conversionArnaud Charlet1-1/+1
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_res.adb (Valid_Conversion): Change error message to make it more user-friendly.
2020-06-17[Ada] Do not generate useless length check for array initializationEric Botcazou4-3/+40
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.ads (Apply_Length_Check_On_Assignment): Declare. * checks.adb (Apply_Length_Check_On_Assignment): New procedure to apply a length check to an expression in an assignment. * exp_ch5.adb (Expand_Assign_Array): Call it instead of calling Apply_Length_Check to generate a length check. * sem_ch5.adb (Analyze_Assignment): Likewise.
2020-06-17[Ada] Support aspect Relaxed_Initialization on private types and constantsPiotr Trojanek5-10/+47
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * einfo.adb (Is_Relaxed_Initialization_State): Add reference to SPARK RM. * sem_attr.adb (Analyze_Attribute_Old_Result): Likewise. * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject aspect on completions of private types and deferred constants. * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): Adjust comments; support queries for constants.
2020-06-17[Ada] Small cleanup throughout CStand bodyEric Botcazou1-117/+70
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * cstand.adb (Stloc): Change to a renaming. (Staloc): Likewise. (Build_Unsigned_Integer_Type): Remove Nam parameter, use local constants and do not call Make_Name. (Make_Dummy_Index): Use local constants. (Create_Standard): Pass the name of entities as parameter in calls to New_Standard_Entity and remove calls to Make_Name. Adjust calls to Build_Unsigned_Integer_Type. (Identifier_For): Use local constant. (Make_Component): Pass the name of the component as parameter in call to New_Standard_Entity and remove call to Make_Name. (Make_Formal): Likewise. Rename Formal_Name parameter into Nam and use local constant. (Make_Name): Delete. (New_Operator): Use local constant. (New_Standard_Entity): Rename S parameter into Nam and build the name here. Remove call to Make_Name. (Register_Float_Type): Pass the name of the type as parameter in call to New_Standard_Entity and remove call to Make_Name.
2020-06-17[Ada] Remove new problematic condition for LLVMEric Botcazou1-3/+1
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>: Remove condition added for scalar types.
2020-06-17[Ada] Various typo corrections plus minor reformattingGary Dismukes5-35/+33
2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust colon columns; reformat comment. * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Likewise. * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec comment and reformat comment in body. (Analyze_Full_Type_Declaration): Reformat comment. (Replace_Type_Name): Fixed three typos, plus reformatting of comment. * sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos. * sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments: remove hyphen, add missing word.
2020-06-17[Ada] Ada2020: AI12-0110 Tampering checks are performed firstBob Duff26-335/+313
2020-06-17 Bob Duff <duff@adacore.com> gcc/ada/ * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb, libgnat/a-cborma.adb, libgnat/a-cborse.adb, libgnat/a-cdlili.adb, libgnat/a-chtgbk.adb, libgnat/a-chtgke.adb, libgnat/a-cidlli.adb, libgnat/a-cihama.adb, libgnat/a-cihase.adb, libgnat/a-cimutr.adb, libgnat/a-ciorma.adb, libgnat/a-ciorse.adb, libgnat/a-cobove.adb, libgnat/a-cohama.adb, libgnat/a-cohase.adb, libgnat/a-coinve.adb, libgnat/a-comutr.adb, libgnat/a-convec.adb, libgnat/a-coorma.adb, libgnat/a-coorse.adb, libgnat/a-crbtgk.adb, libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering checks earlier.
2020-06-17[Ada] Couple of small tweaks related to integer conversionsEric Botcazou2-7/+19
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Get_Integer_Type): Use standard types without a specific size. * sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a redundant intermediate conversion to Universal_Integer.
2020-06-17[Ada] Fix comment of Get_Iterable_Type_PrimitivePiotr Trojanek2-2/+12
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix comment and enforce it with an assertion in the body.
2020-06-17[Ada] Ada_2020 AI12-0220 Pre/Postconditions on Access_To_Subprogram typesEd Schonberg4-189/+243
2020-06-17 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Analyze_Full_Type_Declaration): For an access_to_subprogram declaration that has aspect specifications, call Build_Access_ Subprogram_Wrapper at once, so that pre- and postcondition aspects are analyzed in the context of a subprogram declaration. (Build_Access_Subprogram_Wrapper): Examine aspect specifications of an Access_To_Subprogram declaration. If pre- or postconditions are declared for it, create declaration for subprogram wrapper and add the corresponding aspect specifications to it. Replace occurrences of the type name by that of the generated subprogram, so that attributes 'Old and 'Result can appear in a postcondition. * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved here from sem_prag.adb. * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible subprogram. * sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved to sem_ch3.adb and exp_ch3.adb.
2020-06-17[Ada] Add assertions to Preserve_Comes_From_Source and reuse itPiotr Trojanek6-10/+9
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * atree.adb (Preserve_Comes_From_Source): Rewrite using Set_Comes_From_Source and Comes_From_Source, which enforce that the parameters are valid. * exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb, sem_res.adb: Rewrite using Preserve_Comes_From_Source.
2020-06-17[Ada] Remove obsolete comments in Big_NumbersArnaud Charlet2-6/+0
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete comments.
2020-06-17[Ada] Implement static expression functions for Ada 202x (AI12-0075)Gary Dismukes12-262/+869
2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean aspect, and update the Is_Representation_Aspect, Aspect_Names, and Aspect_Delay arrays. * exp_ch6.adb (Expand_Simple_Function_Return): In the case of a return for a static expression function, capture a copy of the expression of the return statement before it's expanded and reset its Analyzed flags. Then, just before leaving this procedure, if the expression was rewritten, set the Original_Node of the rewritten expression to the new copy and also set the Expression of the associated static expression function to designate that copy. This ensures that later copies of the expression made via New_Copy_Tree will fully copy all nodes of the expression tree. * inline.ads (Inline_Static_Expression_Function_Call): New procedure to evaluate and produce the result of a static call to a static expression function. * inline.adb: Add with and use for Sem_Res. (Establish_Actual_Mapping_For_Inlined_Call): New procedure extracted from code in Expand_Inlined_Call that traverses the actuals and formals of an inlined call and in some cases creates temporaries for holding the actuals, plus establishes an association between formals and actuals (via the Renamed_Object fields of the formals). (Formal_Is_Used_Once): Function removed from Expand_Inlined_Call and now nested in the above procedure. (Expand_Inlined_Call): Code for doing the formal/actual traversal is moved to Create_Actual_Temporaries and replaced with a call to that new procedure. (Inline_Static_Expression_Function_Call): New procedure to evaluate a static call to a static expression function, substituting actuals for their corresponding formals and producing a fully folded and static result expression. The function has subsidiary functions Replace_Formal and Reset_Sloc that take care of doing the mapping of formals to actuals and resetting the Slocs of subnodes of the mapped expression to that of the call so errors will be flagged on the call rather than function. * sem_ch6.adb (Analyze_Expression_Function): In the case of a static expression function, perform an additional preanalysis of the function's expression to ensure that it's a potentially static expression (according to the requirements of 6.8(3.2/5-3.4/5)), and issue an error if it's not. The global flag Checking_Potentially_Static_Expression is set and unset around this checking. * sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce selected requirements of the new aspect Static on expression functions, including checking that the language version is Ada_2020 and that the entity to which it applies is an expression function whose formal parameters are of a static subtype and have mode 'in', its result subtype is a static subtype, and it has no pre- or postcondition aspects. A ??? comment is added to indicate the need for adding checking that type invariants don't apply to the result type if the function is a boundary entity. (Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect Static. * sem_elab.adb (Build_Call_Marker): Return without creating a call marker when the subprogram is a static expression function, since no ABE checking is needed for such functions. * sem_eval.ads (Checking_Potentially_Static_Expression): New function to return whether the checking for potentially static expressions is enabled. (Set_Checking_Potentially_Static_Expression): New procedure to enable or disable checking of potentially static expressions. * sem_eval.adb (Checking_For_Potentially_Static_Expression): New global flag for determining whether preanalysis of potentially static expression is being done, which affects the behavior of certain static evaluation routines. (Checking_Potentially_Static_Expression): New function to return whether the checking for potentially static expressions is enabled. (Eval_Call): When evaluating a call within a static expression function with checking of potentially static expression functions enabled, substitutes a static value in place of the call to allow folding of the expression. (Eval_Entity_Name): When evaluating a formal parameter of a static expression function with checking of potentially static expression functions enabled, substitutes a static value in place of the reference to the formal to allow folding of the expression. (Set_Checking_Potentially_Static_Expression): New procedure to enable or disable checking of potentially static expressions. * sem_res.adb (Resolve_Call): Test for a recursive call occurring within a static expression function and issue an error for such a call. Prevent the establishment of a transient scope in the case this is a call to a (string-returning) static expression function. When calling a static expression function, if no error has been posted on the function, call Inline_Static_Expression_Function_Call to convert the call into its equivalent static value. * sem_util.ads (Is_Static_Expression_Function): New function returning whether the subprogram entity passed to it is a static expression function. (Is_Static_Expression_Function_Call): New function to determine whether the call node passed to it is a static call to a static expression function. * sem_util.adb (Compile_Time_Constraint_Error): Suppress compile-time Constraint_Error reporting when checking for a potentially static expression. (Is_Static_Expression_Function): New function returning whether the subprogram entity passed to it is a static expression function by testing for the presence of aspect Static. (Has_All_Static_Actuals): New function in Is_Static_Expression_Function_Call that traverses the actual parameters of a function call and returns True only when all of the actuals are given by static expressions. In the case of a string-returning function, we call Resolve on each actual to ensure that their Is_Static_Expression flag properly reflects whether they're static, to allow suppressing creation of a transient scope within Resolve_Call. A prominent ??? comment is added to explain this rather unconventional call to Resolve. (Is_Static_Expression_Function_Call): New function that determines whether a node passed to it is a call to a static expression function all of whose actual parameters are given by static expressions.
2020-06-17[Ada] Deal with second specific superflat case in Optimize_Length_ComparisonEric Botcazou1-14/+82
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Optimize_Length_Comparison): New local variable to record whether this may be a dynamic superflat case. (Is_Optimizable): Accept 0 as lower bound and set it in this case, but return false if the operand is not a length too. (Rewrite_For_Equal_Lengths): New procedure. Optimize the comparison of two lengths in the superflat case when the arrays have the same bounds.
2020-06-17[Ada] Adjust documentation of 'Bit and 'Descriptor_Size attributesEric Botcazou2-15/+19
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen the comparison with System.Storage_Unit. (Descriptor_Size): Clear confusion about alignment and padding. * gnat_rm.texi: Regenerate.
2020-06-17[Ada] Work around problematic interaction with public symbol generationEric Botcazou1-1/+8
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>: Do not replace the bound for an array type if it is public.