aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-06-16[Ada] Force evaluation of operator calls in renamingsPiotr Trojanek1-5/+9
2020-06-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_util.adb (Evaluate_Name): Force evaluation of operators.
2020-06-16[Ada] ACATS 4.1K - B452001 - No errors detectedArnaud Charlet3-51/+50
2020-06-16 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_Membership_Op): Reset entity of equality nodes for membership tests with singletons. (Analyze_User_Defined_Binary_Op): Always perform the analysis since nodes coming from the expander also may refer to non standard operators as part of membership expansion. * exp_ch4.adb (Expand_Set_Membership.Make_Cond): Reset entity of equality node. * sem_type.ads: Fix typo in comment.
2020-06-16[Ada] Check if attribute Passed_By_Reference is called on incomplete typesGhjuvan Lacambre1-0/+1
2020-06-16 Ghjuvan Lacambre <lacambre@adacore.com> gcc/ada/ * sem_attr.adb (Analyze_Attribute): Add Check_Not_Incomplete_Type call.
2020-06-16[Ada] Fix two typosGary Dismukes2-2/+2
2020-06-16 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * sem_ch6.adb: Add closing paren in a comment. * sem_util.adb: Correct comment typo (aggreate => aggregate).
2020-06-16[Ada] Crash in tagged type constructor with task componentsJavier Miranda1-47/+4
2020-06-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Code cleanup.
2020-06-16[Ada] Fix small fallout of freezing change for expression functionsEric Botcazou1-41/+49
2020-06-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * freeze.adb (In_Expanded_Body): Remove unreachable code. (Freeze_Expression): Rename a couple of local variables. In the case of an expanded body, also freeze locally the entities declared in a nested block.
2020-06-16[Ada] Fix spurious error on implicit dereference for private typeEric Botcazou1-4/+18
2020-06-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch4.adb (Transform_Object_Operation): Document that it may be partially destructive for the parent of the node. (Try_Object_Operation): Undo the changes made above on failure.
2020-06-16[Ada] Crash in tagged type constructor with task componentsJavier Miranda1-1/+3
2020-06-16 Javier Miranda <miranda@adacore.com> gcc/ada/ * restrict.adb (Global_No_Tasking): Adding Targparm.Restrictions_On_Target Fixes regressions with zfp.
2020-06-16[Ada] Spurious undefined symbol with nested call to expression functionEd Schonberg1-20/+16
2020-06-16 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * freeze.adb: (Freeze_Expression, In_Expanded_Body): Treat the generated body of an expression function like other bodies generated during expansion (e.g. stream subprograms) so that those bodies are not treated as freezing points. Handle properly other global references in such completions.
2020-06-16[Ada] Accept renamings of folded string aggregatesPiotr Trojanek2-11/+19
2020-06-16 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch8.adb (Analyze_Object_Renaming): Remove trivially useless initialization of Is_Object_Reference. * sem_util.adb (Is_Object_Reference): Simplify detection of binary and unary operators; literally implement rules about aggregates and qualified expressions; recognize string literals as object references.
2020-06-16[Ada] Implement AI12-0351 Matching for actuals for formal derived typesEric Botcazou4-45/+158
2020-06-16 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch12.adb (Validate_Derived_Type_Instance): Reword error message for 12.5.1(8) subclause and add secondary message if the incompatibility comes from the predicates. * sem_ch3.adb (Check_Constraining_Discriminant): New procedure to give the error required by the 3.7(15) subclause. Mention "statically" in the error message and add secondary message if the incompatibility comes from the predicates. (Build_Derived_Concurrent_Type): Call it when a new discriminant constrains an old one. (Build_Derived_Record_Type): Likewise. * sem_eval.ads (Predicates_Compatible): Declare. * sem_eval.adb (Predicates_Compatible): New function to implement the compatibility of predicates specified by the 4.9.1 clause. (Subtypes_Statically_Compatible): Call it.
2020-06-16c++: TI_DEFERRED_ACCESS_CHECKS and dependent declsPatrick Palka2-4/+7
This adds an assert to enforce_access to verify that we don't defer access checks of dependent decls -- we should instead be rechecking the access of such a decl after tsubst'ing into the user of the decl. gcc/cp/ChangeLog: * pt.c (perform_instantiation_time_access_checks): No need to tsubst into decl. * semantics.c (enforce_access): Verify that decl is not dependent.
2020-06-16c++: Clean up previous change [PR41437]Patrick Palka3-83/+47
The previous patch mostly avoided making any changes that had no functional impact, such as adjusting now-outdated comments and performing renamings. Such changes have been consolidated to this followup patch for easier review. The main change here is that we now reuse struct deferred_access_check as the element type of the vector TI_TYPEDEFS_NEEDING_ACCESS_CHECKING (now renamed to TI_DEFERRED_ACCESS_CHECKS, since it may contain any kind of access check). gcc/cp/ChangeLog: PR c++/41437 PR c++/47346 * cp-tree.h (qualified_typedef_usage_s): Delete. (qualified_typedef_usage_t): Delete. (deferred_access_check): Move up in file. (tree_template_info::typedefs_needing_access_checking): Delete. (tree_template_info::deferred_access_checks): New field. (TI_TYPEDEFS_NEEDING_ACCESS_CHECKING): Rename to ... (TI_DEFERRED_ACCESS_CHECKS): ... this, and adjust accordingly. * pt.c (perform_typedefs_access_check): Rename to ... (perform_instantiation_time_access_checks): ... this, and adjust accordingly. Remove unnecessary tree tests. (instantiate_class_template_1): Adjust accordingly. (instantiate_decl): Likewise. * semantics.c (enforce_access): Likewise.
2020-06-16c++: Improve access checking inside templates [PR41437]Patrick Palka16-240/+128
This patch generalizes our existing functionality for deferring access checking of typedefs when parsing a function or class template to now defer all kinds of access checks until template instantiation time, including member function and member object accesses. Since all access checks eventually go through enforce_access, the main component of this patch is new handling inside enforce_access to defer the current access check if we're inside a template. The bulk of the rest of the patch consists of removing now-unneeded code pertaining to suppressing access checks inside templates or pertaining to typedef-specific access handling. Renamings and other changes with no functional impact have been split off into the followup patch. gcc/cp/ChangeLog: PR c++/41437 PR c++/47346 * call.c (enforce_access): Move to semantics.c. * cp-tree.h (enforce_access): Delete. (get_types_needing_access_check): Delete. (add_typedef_to_current_template_for_access_check): Delete. * decl.c (make_typename_type): Adjust accordingly. Use check_accessibility_of_qualified_id instead of directly using perform_or_defer_access_check. * parser.c (cp_parser_template_declaration_after_parameters): Don't push a dk_no_check access state when parsing a template. * pt.c (get_types_needing_access_check): Delete. (append_type_to_template_for_access_check_1): Delete. (perform_typedefs_access_check): Adjust. If type_decl is a FIELD_DECL, also check its DECL_CONTEXT for dependence. Use tsubst_copy instead of tsubst to substitute into type_decl so that we substitute into the DECL_CONTEXT of a FIELD_DECL. (append_type_to_template_for_access_check): Delete. * search.c (accessible_p): Remove the processing_template_decl early exit. * semantics.c (enforce_access): Moved from call.c. If we're parsing a template and the access check failed, add the check to TI_TYPEDEFS_NEEDING_ACCESS_CHECKING. (perform_or_defer_access_check): Adjust comment. (add_typedef_to_current_template_for_access_check): Delete. (check_accessibility_of_qualified_id): Adjust accordingly. Exit early if the scope is dependent. gcc/testsuite/ChangeLog: PR c++/41437 PR c++/47346 * g++.dg/cpp2a/concepts-using2.C: Adjust. * g++.dg/lto/20081219_1.C: Adjust. * g++.dg/lto/20091002-1_0.C: Adjust. * g++.dg/lto/pr65475c_0.C: Adjust. * g++.dg/opt/dump1.C: Adjust. * g++.dg/other/pr53574.C: Adjust. * g++.dg/template/access30.C: New test. * g++.dg/template/access31.C: New test. * g++.dg/wrappers/wrapper-around-type-pack-expansion.C: Adjust. libstdc++-v3/ChangeLog: PR libstdc++/94003 * testsuite/20_util/is_constructible/94003.cc: New test.
2020-06-16middle-end/95690 - avoid MEM_EXPRs for constantsRichard Biener2-1/+9
The following avoids calling set_mem_attributes on the DECL_INITIAL of a CONST_DECL which seems pointless since there cannot be a sensible MEM_EXPR derived from that. We're overwriting both other possibly useful info, alias-set and alignment immediately so the following patch simply removes the call instead of making the function deal with even more (unexpected) trees that are not memory accesses. 2020-06-16 Richard Biener <rguenther@suse.de> PR middle-end/95690 * varasm.c (build_constant_desc): Remove set_mem_attributes call. * gfortran.dg/pr95690.f90: New testcase.
2020-06-16Un-XFAIL 'gcc.dg/graphite/pr80906.c'Thomas Schwinge1-2/+1
The recent commit b6ff3ddecfa93d53867afaaa078f85fc848abbbd "tree-optimization/94988 - enhance SM some more" fixed this. gcc/testsuite/ PR tree-optimization/94988 * gcc.dg/graphite/pr80906.c: Un-XFAIL.
2020-06-16Further adjust 'dg-lto-options' in 'gcc.dg/lto/pr52634'Thomas Schwinge1-1/+1
The recent commit f8a4141bae53f9125d374e5873dcda3f75392f1f "Fix various dg directives" corrected the imbalanced curly braces in 'dg-lto-options', which changes the testing as follows: -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O0 -flto -flto-partition=none -fuse-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O0 -flto -flto-partition=none -fuse-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O0 -flto -flto-partition=none -fuse-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O2 -flto -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O2 -flto -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O2 -flto -flto-partition=none -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O0 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O0 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O0 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O2 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O2 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O2 -flto -flto-partition=1to1 -fno-use-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O0 -flto -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O0 -flto -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O0 -flto -fuse-linker-plugin -fno-fat-lto-objects -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -O2 -flto -fuse-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -O2 -flto -fuse-linker-plugin -PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -O2 -flto -fuse-linker-plugin +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -flto +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -flto +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -flto +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -r +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -r +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -r +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o assemble, -flto-partition=1to1 +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_1.o assemble, -flto-partition=1to1 +PASS: gcc.dg/lto/pr52634 c_lto_pr52634_0.o-c_lto_pr52634_1.o link, -flto-partition=1to1 I however assume the original idea however has not been to run variants '-flto', '-r', '-flto-partition=1to1' individually, but rather to run one variant '-flto -r -flto-partition=1to1'. gcc/testsuite/ * gcc.dg/lto/pr52634_0.c: Further adjust 'dg-lto-options'.
2020-06-16RISC-V: Fix ICE on riscv_gpr_save_operation_p [PR95683]Kito Cheng2-1/+14
- riscv_gpr_save_operation_p might try to match parallel on other patterns like inline asm pattern, and then it might trigger ther assertion checking there, so we could trun it into a early exit check. gcc/ChangeLog: PR target/95683 * config/riscv/riscv.c (riscv_gpr_save_operation_p): Remove assertion and turn it into a early exit check. gcc/testsuite/ChangeLog PR target/95683 * gcc.target/riscv/pr95683.c: New.
2020-06-16Daily bump.GCC Administrator5-1/+466
2020-06-16gcc/jit: Rename libgccjit.dll to libgccjit-0.dll.Nicolas Bertolo1-8/+10
2020-06-09 Nicolas Bértolo <nicolasbertolo@gmail.com> * Make-lang.in: Always define version, minor and release numbers. Create the Windows shared library as libgccjit-$(LIBGCCJIT_VERSION_NUM).dll.
2020-06-15libgo: update x/sys/cpu to add all GOARCHes supported by gccgoTobias Klauser1-1/+1
CL 237897 added additional GOARCHes supported by gccgo to x/sys/cpu. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/238038
2020-06-15internal/syscall/unix: use getrandom_linux_generic.go on riscvTobias Klauser1-1/+1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/237899
2020-06-15Optimize assignment to volatile aggregate variableEric Botcazou3-17/+81
gimplify_modify_expr_rhs has an optimization whereby the assignment to an aggregate variable from a read-only object with a DECL_INITIAL is optimized into the direct assignment of the DECL_INITIAL, provided that no temporary is created in the process. The optimization is blocked if the read-only object is volatile, which is OK as per the semantics of volatile, but also if the target variable is volatile, on the grounds that the modified assignment might end up being done on a per field basis, which is also OK. But this latter restriction is enforced a priori and there are cases where the modified assignment would be OK, for example if there is only one field or the DECL_INITIAL is equivalent to the empty CONSTRUCTOR, i.e. all zeros. So, in the latter case, the patch changes gimplify_modify_expr_rhs to ask gimplify_init_constructor whether the assignment would be done as a block, which is easy because gimplify_init_constructor knows that it must create a temporary if the LHS is volatile and this would not be the case, so it's just a matter of completing the NOTIFY_TEMP_CREATION mechanism. gcc/ChangeLog * gimplify.c (gimplify_init_constructor) <AGGREGATE_TYPE>: Declare new ENSURE_SINGLE_ACCESS constant and move variables down. If it is true and all elements are zero, then always clear. Return GS_ERROR if a temporary would be created for it and NOTIFY_TEMP_CREATION set. (gimplify_modify_expr_rhs) <VAR_DECL>: If the target is volatile but the type is aggregate non-addressable, ask gimplify_init_constructor whether it can generate a single access to the target. gcc/testsuite/ChangeLog * gnat.dg/aggr30.ads, gnat.dg/aggr30.adb: New test.
2020-06-15Fix ICE in verify_sra_access_forestEric Botcazou3-0/+53
This fixes an issue with reverse storage order in SRA, which is caught by the built-in verifier in verify_sra_access_forest. The problem is that propagate_subaccesses_from_rhs changes the type of an access from aggregate to scalar and, as discussed elsewhere, this must be done with extra care in the presence of reverse storage order. gcc/ChangeLog * tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar access on the LHS is replaced with a scalar access, propagate the TYPE_REVERSE_STORAGE_ORDER flag of the type of the original access. gcc/testsuite/ChangeLog * gnat.dg/opt85.ads, gnat.dg/opt85.adb: New test.
2020-06-15gcc: xtensa: make TARGET_HAVE_TLS definition staticMax Filippov1-3/+6
Remove TARGET_THREADPTR reference from TARGET_HAVE_TLS to avoid static data initialization dependency on xtensa core configuration. 2020-06-15 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Remove TARGET_THREADPTR reference. (xtensa_tls_symbol_p, xtensa_tls_referenced_p): Use targetm.have_tls instead of TARGET_HAVE_TLS. (xtensa_option_override): Set targetm.have_tls to false in configurations without THREADPTR.
2020-06-15gcc: xtensa: add -mabi option for call0/windowed ABIMax Filippov9-8/+86
2020-06-15 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/elf.h (ASM_SPEC, LINK_SPEC): Pass ABI switch to assembler/linker. * config/xtensa/linux.h (ASM_SPEC, LINK_SPEC): Ditto. * config/xtensa/uclinux.h (ASM_SPEC, LINK_SPEC): Ditto. * config/xtensa/xtensa.c (xtensa_option_override): Initialize xtensa_windowed_abi if needed. * config/xtensa/xtensa.h (TARGET_WINDOWED_ABI_DEFAULT): New macro. (TARGET_WINDOWED_ABI): Redefine to xtensa_windowed_abi. * config/xtensa/xtensa.opt (xtensa_windowed_abi): New target option variable. (mabi=call0, mabi=windowed): New options. * doc/invoke.texi: Document new -mabi= Xtensa-specific options. gcc/testsuite/ * gcc.target/xtensa/mabi-call0.c: New test. * gcc.target/xtensa/mabi-windowed.c: New test. libgcc/ * configure: Regenerate. * configure.ac: Use AC_COMPILE_IFELSE instead of manual preprocessor invocation to check for __XTENSA_CALL0_ABI__.
2020-06-15gcc: xtensa: make register elimination data staticMax Filippov2-8/+34
Remove ABI reference from the ELIMINABLE_REGS to avoid static data initialization dependency on xtensa core configuration. 2020-06-15 Max Filippov <jcmvbkbc@gmail.com> gcc/ * config/xtensa/xtensa.c (xtensa_can_eliminate): New function. (TARGET_CAN_ELIMINATE): New macro. * config/xtensa/xtensa.h (XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM) (XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM): New macros. (HARD_FRAME_POINTER_REGNUM): Define using XTENSA_*_HARD_FRAME_POINTER_REGNUM. (ELIMINABLE_REGS): Replace lines with HARD_FRAME_POINTER_REGNUM by lines with XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM and XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM.
2020-06-15BRIG FE testsuite: Fix all dump-scansMartin Jambor1-1/+1
since Alexandre's revamp of dump files handling in r11-627-g1dedc12d186, BRIG FE has been receiving slightly different -dumpbase (e.g. smoke_test.brig instead of smoke_test.hsail.brig when compiling file smoke_test.hsail.brig) and the testsuite then could not find the generated dump files it wanted to scan. I have not really looked into why that changed, the easiest fix seems to me to remove the hsail part already when generating the binary brig file from the textual HSAIL representation. gcc/testsuite/ChangeLog: 2020-06-09 Martin Jambor <mjambor@suse.cz> * lib/brig.exp (brig_target_compile): Strip hsail extension when gnerating the name of the binary brig file.
2020-06-15vect: Use LOOP_VINFO_DATAREFS and LOOP_VINFO_DDRS consistentlyFei Yang2-13/+13
Minor code refactorings in tree-vect-data-refs.c and tree-vect-loop.c. Use LOOP_VINFO_DATAREFS and LOOP_VINFO_DDRS when possible and rename several parameters to make code more consistent. 2020-06-13 Felix Yang <felix.yang@huawei.com> gcc/ * tree-vect-data-refs.c (vect_verify_datarefs_alignment): Rename parameter to loop_vinfo and update uses. Use LOOP_VINFO_DATAREFS when possible. (vect_analyze_data_refs_alignment): Likewise, and use LOOP_VINFO_DDRS when possible. * tree-vect-loop.c (vect_dissolve_slp_only_groups): Use LOOP_VINFO_DATAREFS when possible. (update_epilogue_loop_vinfo): Likewise.
2020-06-15[Ada] Rewrite Sem_Eval.Predicates_Match predicateEric Botcazou2-28/+30
2020-06-15 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_eval.ads (Predicates_Match): Fix description. * sem_eval.adb (Predicates_Match): Rewrite.
2020-06-15[Ada] Makefile.rtl: minor file renamingsEd Falis1-3/+3
2020-06-15 Ed Falis <falis@adacore.com> gcc/ada/ * Makefile.rtl: Change name of hie/g-io__vxworks-ppc-cert.adb.
2020-06-15[Ada] Improve error message on premature usage of subtypesArnaud Charlet1-30/+30
2020-06-15 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch8.adb (Premature_Usage): Add support for subtype references and replace set of if-then-else by a case statement.
2020-06-15[Ada] Do expect task discriminants in Global and Depends contractsPiotr Trojanek1-2/+16
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_prag.adb (Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part): Bring back task discriminants for analysis of the Global/Depends contracts; add comments.
2020-06-15[Ada] Implement AI12-0343 Return Statement ChecksEric Botcazou7-225/+231
2020-06-15 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * einfo.ads (Return_Applies_To): Document special usage for E_Block. * einfo.adb (Write_Field8_Name): Write it for E_Block too. * exp_ch4.adb (Expand_N_Type_Conversion): Remove implementation of the check prescribed by AI05-0073. * exp_ch6.adb (Apply_CW_Accessibility_Check): New procedure to apply the check prescribed by AI95-344 extracted from... (Expand_N_Extended_Return_Statement): Apply the check prescribed by AI95-344 to the expression, if present. Suppress only access checks when analyzing the rewritten result. (Expand_Simple_Function_Return): ...here. Rename local variable. Call Apply_CW_Accessibility_Check to apply the check prescribed by AI95-344, but do not do it for the simple return statement generated by the expansion of an extended return statement. Apply the check prescribed by AI05-0073 to all functions returning anonymous access type designating a specific tagged type, but not if the expression was null or tag checks are suppressed for the type, and use Not In operator rather than comparing the tags explicitly. * sem.adb (Analyze): Handle all Suppress values. * sem_ch6.adb (Analyze_Function_Return): Do not explicitly apply predicate checks in the case of an extended return statement. Do not apply an implicit conversion to the anonymous access result type in the case of the simple return statement generated by the expansion of an extended return statement. (New_Overloaded_Entity): Small comment tweak. * treepr.adb (Print_Node): Fix typo in flag string.
2020-06-15[Ada] T'Image calls T'Put_ImageBob Duff8-28/+151
2020-06-15 Bob Duff <duff@adacore.com> gcc/ada/ * exp_put_image.ads, exp_put_image.adb (Image_Should_Call_Put_Image): New function to determine whether the call to Put_Image should be generated. (Build_Image_Call): New procedure to generate the call to Put_Image. * exp_imgv.adb (Expand_Image_Attribute): Use underlying types to bypass privacy (only in Ada 2020). If Image_Should_Call_Put_Image is True (which happens only in Ada 2020), then call Build_Image_Call. * rtsfind.ads, rtsfind.adb: Add the necessary declarations in Ada.Strings.Text_Output.Buffers. * sem_attr.adb (Check_Image_Type): Enable the Ada 2020 case. * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Use the less restrictive type that allows newline characters.
2020-06-15[Ada] Minor editorial changes in commentsGary Dismukes2-4/+4
2020-06-15 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch9.ads (Build_Master_Declaration): Add commas. * exp_ch9.adb (Build_Master_Entity): Spelling fix ("build" => "built"). (Build_Task_Activation_Call): Fix word order.
2020-06-15[Ada] Allow uninitialized values on Big_Positive/NaturalArnaud Charlet1-2/+6
2020-06-15 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-nbnbin.ads (Big_Positive, Big_Natural): Fix predicate.
2020-06-15[Ada] Fix analysis of Relaxed_Initialization for bodies-as-specsPiotr Trojanek2-11/+24
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix dealing with scopes on subprogram bodies that act as specs. * sem_util.adb (Has_Relaxed_Initialization): Fix trivial mistake.
2020-06-15[Ada] Crash in tagged type constructor with task componentsJavier Miranda14-100/+299
2020-06-15 Javier Miranda <miranda@adacore.com> gcc/ada/ * restrict.ads (Set_Global_No_Tasking, Global_No_Tasking): New subprograms. * restrict.adb (Set_Global_No_Tasking, Global_No_Tasking): New subprograms. * sem_ch3.adb (Access_Definition): Do not skip building masters since they may be required for BIP calls. (Analyze_Subtype_Declaration): Propagate attribute Is_Limited_Record in class-wide subtypes and subtypes with cloned subtype attribute; propagate attribute Is_Limited_Interface. * sem_ch6.adb (Check_Anonymous_Return): Do not skip building masters since they may be required for BIP calls. Use Build_Master_Declaration to declare the _master variable. (Create_Extra_Formals): Add decoration of Has_Master_Entity when the _master formal is added. * exp_ch3.adb (Init_Formals): Adding formal to decorate it with attribute Has_Master_Entity when the _master formal is added. (Build_Master): Do not skip building masters since they may be required for BIP calls. (Expand_N_Object_Declaration): Ensure activation chain and master entity for objects initialized with BIP function calls. * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings): Adding support to detect and save restriction No_Tasking when set in the run-time package System or in a global configuration pragmas file. * sem_util.adb (Current_Entity_In_Scope): Overload this subprogram to allow searching for an entity by its Name. * sem_util.ads (Current_Entity_In_Scope): Update comment. * exp_ch4.adb (Expand_N_Allocator): Do not skip building masters since they may be required for BIP calls. * exp_ch6.ads (Might_Have_Tasks): New subprogram. * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add support for BIP calls returning objects that may have tasks. (Make_Build_In_Place_Call_In_Allocator): Build the activation chain if the result might have tasks. (Make_Build_In_Place_Iface_Call_In_Allocator): Build the class wide master for the result type. (Might_Have_Tasks): New subprogram. (Needs_BIP_Task_Actuals): Returns False when restriction No_Tasking is globally set. * exp_ch9.ads (Build_Master_Declaration): New subprogram. * exp_ch9.adb (Build_Activation_Chain_Entity): No action performed when restriction No_Tasking is globally set. (Build_Class_Wide_Master): No action performed when restriction No_Tasking is globally set; use Build_Master_Declaration to declare the _master variable. (Build_Master_Declaration): New subprogram. (Build_Master_Entity): No action performed when restriction No_Tasking is globally set; added support to handle transient scopes and _finalizer routines. (Build_Master_Renaming): No action performed when restriction No_Tasking is globally set. (Build_Task_Activation_Call): Skip generating the call when the chain is an ignored ghost entity. (Find_Master_Scope): Generalize the code that detects transient scopes with master entity. * einfo.ads (Has_Nested_Subprogram): Minor comment reformatting.
2020-06-15[Ada] Missing errors on aspect checkingArnaud Charlet3-98/+164
2020-06-15 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_attr.adb (Eval_Attribute): Protect against previous errors. * sem_ch13.adb (Analyze_Aspect_Default_Value): Remove redundant error checking, handling in Analyze_Aspect_Specifications. (Analyze_Aspect_Specifications): Refine error messages on Default_[Component_]Value. (Check_Aspect_Too_Late): New procedure. (Rep_Item_Too_Late.Is_Derived_Type_With_Constraint): Remove, dead code. * aspects.ads (Is_Representation_Aspect): Default_Value is a representation aspect.
2020-06-15[Ada] AI12-0260 Functions Is_Basic and To_Basic in Wide_Characters.HandlingArnaud Charlet6-8/+5903
2020-06-15 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-wichha.ads, libgnat/a-wichha.adb, libgnat/a-wichun.ads, libgnat/a-wichun.adb (Is_Basic, To_Basic): New. * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_Basic, To_UTF_32_Basic, Decomposition_Search): New subprograms. (Unicode_Decomposition): New table.
2020-06-15[Ada] Passing actual parameter values to out formals when Default_Value is setGary Dismukes1-0/+19
2020-06-15 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch6.adb (Add_Call_By_Copy_Code): In the case of a view conversion passed to a scalar out-mode parameter where the formal has Default_Value set, declare the copy temp with the base type of the formal's subtype and initialize the copy temp with the actual's value.
2020-06-15[Ada] Bad access checks on if/case expression as actualJustin Squirek4-20/+323
2020-06-15 Justin Squirek <squirek@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Case_Expression): Set default value for Target to silence potential warnings. (Expand_N_If_Expression): Add calculation to check when the if expression is used directly in the context of an actual of an anonymous access type and add a special path to force expansion of the if expression in this case. * exp_ch6.adb (Expand_Branch): Generate an assignment to the level temporary for a given branch. (Expand_Call_Helper): Add expansion to allow for creating a temporary to store associated accessiblity levels on each branch of the conditional expression. Also perform expansion of function calls into expressions with actions, and fixup references to N with Call_Node. (Insert_Level_Assign): Move through nested conditional expressions to each branch. * sem_util.ads, sem_util.adb (Is_Anonymous_Access_Actual): Added to detect when to force expansion of if expressions.
2020-06-15[Ada] Do not expect task discriminants in Global and Depends contractsPiotr Trojanek1-6/+2
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_prag.adb (Analyze_Depends_In_Decl_Part, Analyze_Global_In_Decl_Part): Do not install task discriminants for analysis of the Global/Depends contracts.
2020-06-15[Ada] Do not expect Global or Depends on single protected objectsPiotr Trojanek1-3/+3
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * contracts.adb (Analyze_Object_Contract): Do not expect Global/Depends on single protected units.
2020-06-15[Ada] Incorrect accessibility checks on functions callsJustin Squirek1-4/+7
2020-06-15 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_res.adb (Valid_Conversion): Add missing condition to trigger proper static accessiblity failiures when the target type is an anonymous access.
2020-06-15[Ada] Replace repeated Ekind with Ekind_InPiotr Trojanek1-2/+1
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_ch6.adb (Expand_Call_Helper): Replace repeated Ekind with Ekind_In.
2020-06-15[Ada] Remove excessive parensPiotr Trojanek2-3/+3
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_ch6.adb, sem_util.adb: Remove excessive parents, especially since they don't make the code any easier to read.
2020-06-15[Ada] Support aspect Relaxed_Initialization and attribute InitializedPiotr Trojanek11-11/+402
2020-06-15 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * aspects.ads (Aspect_Id): Add Aspect_Relaxed_Initialization. (Implementation_Defined_Aspect): Add new aspect. (Aspect_Argument): Add new aspect with Optional_Expression argument. (Is_Representation_Aspect): Add new aspect as a non-representation one. (Aspect_Names): Add name for the new aspect. (Aspect_Delay): Add new aspect as a non-delayed one. * sem_ch3.adb: Minor reformatting. * einfo.ads, einfo.adb (Is_Relaxed_Initialization_State): New query; reuses existing code for querying abstract state options. * exp_attr.adb (Expand_N_Attribute_Reference): For now ignore attribute 'Initialized. * sem_attr.adb (Analyze_Attribute_Old_Result): Allow attribute 'Result to be used in the aspect Relaxed_Initialization expression. (Analyze_Attribute): Analyze attribute 'Initialized; based on existing code for attribute 'Valid_Scalars. (Eval_Attribute): Do not expect attribute 'Initialized, just like attribute 'Valid_Scalars is not expected. * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): New routine. (Analyze_Aspect_Specifications): Analyze new aspect in a dedicated routine. (Check_Aspect_At_Freeze_Point): Do not expect new aspect. * sem_prag.adb (Analyze_Abstract_State): Support option Relaxed_Initialization on abstract states. * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): New query for the GNATprove backend. * snames.ads-tmpl (Snames): Add Name_Ids for the new aspect and attribute; add an Attribute_Id for the new attribute.
2020-06-15[Ada] Put_Image: Enable for access-to-subprogram typesBob Duff4-11/+9
2020-06-15 Bob Duff <duff@adacore.com> gcc/ada/ * exp_put_image.adb, libgnat/s-putima.adb, libgnat/s-putima.ads, rtsfind.ads: Enable Put_Image if Is_Access_Subprogram_Type (Typ). Remove comment saying it's disabled in that case. Rename Put_Image_Access_Prot to be Put_Image_Access_Prot_Subp to clarify that we're talking about access-to-subprogram, not access-to-protected-object.