aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
AgeCommit message (Collapse)AuthorFilesLines
2022-11-07ada: Cleanup WITH clauses after switching from obsolescent Ada 83 unitPiotr Trojanek1-11/+6
Cleanup after replacing Unchecked_Conversion with Ada.Unchecked_Conversion. gcc/ada/ * libgnarl/s-interr.adb: Reorder context items and pragmas.
2022-11-07ada: Create operator nodes in functional stylePiotr Trojanek2-70/+76
A recent patch removed two rewritings, where we kept the operator node but replaced its operands. This patch removes explicit setting of the operands; instead, the operator is already created together with its operands, which seems a bit safer and more consistent with how we typically create operator nodes. It is a cleanup only; semantics is unaffected. gcc/ada/ * exp_ch4.adb (Expand_Modular_Addition): Rewrite using Make_XXX calls. (Expand_Modular_Op): Likewise. (Expand_Modular_Subtraction): Likewise. * exp_imgv.adb (Expand_User_Defined_Enumeration_Image): Likewise.
2022-11-07ada: Don't reuse operator nodes in expansionPiotr Trojanek4-59/+58
This patch removes handling of references to unset objects that relied on Original_Node. This handling was only needed because of rewriting that reused operator nodes, for example, when an array inequality like: A < B was rewritten into: System.Compare_Array_Unsigned_8.Compare_Array_U8 (A'Address, B'Address, A'Length, B'Length) < 0 by keeping the node for operator "<" and only substituting its operands. It seems safer to simply create an new operator node when rewriting and not rely on Original_Node afterwards. Cleanup related to improved detection uninitialized objects. gcc/ada/ * checks.adb (Apply_Arithmetic_Overflow_Strict): Rewrite using a newly created operator node. * exp_ch4.adb (Expand_Array_Comparison): Likewise. * exp_ch6.adb (Add_Call_By_Copy_Code): Rewriting actual parameter using its own location and not the location of the subprogram call. * sem_warn.adb (Check_References): Looping with Original_Node is no longer needed.
2022-11-07ada: Simplify detection of pragmas in the context itemsPiotr Trojanek1-11/+5
Code cleanup; semantics is unaffected. gcc/ada/ * sem_prag.adb (Is_In_Context_Clause): Rewrite without negations and inequalities.
2022-11-07ada: Reject misplaced pragma ObsolescentPiotr Trojanek1-2/+8
Pragma Obsolescent appearing before declaration was putting the Obsolescent flag on the Standard package, which is certainly wrong. The problem was that we relied on the Find_Lib_Unit_Name routine without sanitizing the pragma placement with Check_Valid_Library_Unit_Pragma. Part of cleaning up the warnings machinery to better handle references to unset objects. gcc/ada/ * sem_prag.adb (Analyze_Pragma [Pragma_Obsolescent]): Reject misplaced pragma.
2022-11-07ada: Fix missing tag for with of an obsolescent functionPiotr Trojanek1-1/+1
Fix minor inconsistency in tags of warnings about obsolescent entities. Part of cleaning up the warnings machinery to better handle references to unset objects. gcc/ada/ * sem_warn.adb (Output_Obsolescent_Entity_Warnings): Tag warnings about obsolescent functions just like we tag similar warnings for packages and procedures.
2022-11-07ada: Remove useless validity suppression for attribute InputPiotr Trojanek1-3/+2
Attributes 'Input and 'Read are similar, but only the 'Read denotes a subprogram with parameter of mode OUT where operand validity checks need to be suppressed. Cleanup related to fix for attributes 'Has_Same_Storage and 'Overlaps_Storage. gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Remove useless skipping for attribute Input.
2022-11-06Daily bump.GCC Administrator1-0/+245
2022-11-04ada: Fix for validity checks combined with aliasing checksJustin Squirek1-5/+11
Attribute Overlaps_Storage, which can appear implicitly in expansion of aliasing checks, is now excluded from operand validity checks. Likewise for attribute Has_Same_Storage. gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference): Skip operand validity checks for attributes Has_Same_Storage and Overlaps_Storage.
2022-11-04ada: Fix couple of issues with arrays indexed by enumeration typeEric Botcazou2-15/+5
The first one is that Remove_Warning_Messages reinstates the Original_Node of an N_Raise_Constraint_Error node in the tree for no clear reasons, and the Original_Node may contain constructs whose expansion has been stopped when the Constraint_Error was asserted, eventually causing gigi to stop. The second one is that a path in Build_Array_Aggr_Code.Gen_Loop does not copy the loop bounds, unlike other paths, thus triggering a sharing issue. gcc/ada/ * errout.adb (Remove_Warning_Messages.Check_For_Warning): Do not reinstate the Original_Node in the tree. * exp_aggr.adb (Build_Array_Aggr_Code.Gen_Loop): Copy the bounds on all paths.
2022-11-04ada: Fix typo in comment referring to pragma RestrictionsPiotr Trojanek1-3/+2
Comment cleanup only. gcc/ada/ * libgnat/g-excact.ads (Register_Global_Action): Refill comment. (Name_To_Id): Change pragma Restriction from singular to plural.
2022-11-04ada: Cleanup code for warnings about unreferenced formal parametersPiotr Trojanek1-9/+0
Cleanup related to new checks for unset references. gcc/ada/ * sem_warn.adb (Check_References): Remove redundant guard, as it is implied by a preceding call to Referenced_Check_Spec.
2022-11-04ada: Cleanup code for unreferenced variablesPiotr Trojanek1-19/+10
Further cleanups related to warnings about unreferenced objects. gcc/ada/ * sem_warn.adb (Check_References): Remove useless query for "spec" of a variable; refactor nested if-statements into a single condition.
2022-11-04ada: Cleanup code for warnings about unset referencesPiotr Trojanek2-12/+19
Cleanup related to new checks for unset references. gcc/ada/ * sem_util.adb (In_Pragma_Expression): Add standard guard against searching too far. (In_Quantified_Expression): Likewise. * sem_warn.adb (May_Need_Initialized_Actual): Remove redundant parens. (Check_References): Remove guard that duplicates a condition from the enclosing if-statement; only assign E1T variable when necessary. (Within_Postcondition): Fix layout. (No_Warn_On_In_Out): Balance parens in comment.
2022-11-04ada: Static intrinsic functions are a core language extension.Steve Baird4-3/+9
GNAT-defined Ada extensions are divided into two categories: those that are enabled by either -gnatX or -gnatX0 and those which require -gnatX0. Move static intrinsic functions from the second category into the first. gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Add the standard '... "On" enables this extension.' sentence to the description of static intrinsic functions. * sem_ch13.adb (Analyze_Aspect_Spec): In the call to Error_Msg_GNAT_Extension for a Static aspect specification for an intrinsic function, specify Is_Core_Extension => True. * sem_eval.adb (Eval_Intrinsic_Call): Test Core_Extensions_Allowed instead of testing All_Extensions_Allowed. * gnat_rm.texi: Regenerate.
2022-11-04ada: Remove redundant calls in handling of aspect specificationsPiotr Trojanek3-4/+0
Routine Set_Aspect_Specifications sets the Has_Aspect flag, so there is no need to set this flag again afterwards. Code cleanup; semantics is unaffected. gcc/ada/ * aspects.adb (Relocate_Aspect): Remove call to Set_Has_Aspects. * sem_ch12.adb (Analyze_Formal_Package_Declaration): Likewise. * sem_util.adb (Copy_Ghost_Aspect, Copy_SPARK_Mode_Aspect): Likewise.
2022-11-04ada: Flag unsupported dispatching constructor callsJavier Miranda1-0/+44
gcc/ada/ * exp_intr.adb (Expand_Dispatching_Constructor_Call): Report an error on unsupported dispatching constructor calls and report a warning on calls that may fail at run time. gcc/testsuite/ * gnat.dg/abstract1.ads: Cleanup whitespaces. * gnat.dg/abstract1.adb: Likewise and add -gnatws to silence new warning.
2022-11-04ada: Avoid repeated iteration over private protected componentsPiotr Trojanek1-14/+11
The First_Entity/Next_Entity chain includes private entities, so there it no need to iterate starting both from First_Entity and First_Private_Entity. Code cleanup related to improved detection of references to uninitialized objects; behavior is unaffected. gcc/ada/ * sem_util.adb (Check_Components): Iterate using First/Next_Component_Or_Discriminant. (Has_Preelaborable_Initialization): Avoid repeated iteration with calls to Check_Components with First_Entity and First_Private_Entity. (Is_Independent_Object_Entity): Tune indentation.
2022-11-04ada: Cleanup clearing flags on package variablesPiotr Trojanek1-12/+9
When killing flags on assignable entities we iterated from First_Entity and then again from First_Private_Entity. This second iteration was unnecessary, because the entity chain that starts with First_Entity contains all entities, including the private ones. This is just a performance improvement; the behavior is unchanged. gcc/ada/ * sem_ch7.adb (Clear_Constants): Only iterate from First_Entity through Next_Entity; only examine variables because packages have no assignable formal parameters.
2022-11-04ada: Fix various typos in GNAT User's GuidePiotr Trojanek4-16/+18
Fix uncontroversial typos. gcc/ada/ * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix typos. * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Fix typos and refill as necessary; remove trailing whitespace. * doc/gnat_ugn/gnat_and_program_execution.rst: Fix typos. * gnat_ugn.texi: Regenerate.
2022-11-04ada: Fix loop unnesting issue.Marc Poulhiès3-8/+16
During loop unnesting, when the loop statements are wrapped in a code block, the newly created block's scope must be set to the loop scope (instead of the previous 'Current_Scope' that would point to an upper scope). gcc/ada/ * sem_util.ads (Add_Block_Identifier): Add new extra Scope argument. * sem_util.adb (Add_Block_Identifier): Likewise and use this scope variable instead of Current_Scope. * exp_util.adb (Wrap_Statements_In_Block): Add new scope argument to Add_Block_Identifier call.
2022-11-04ada: Fix repeated killing of private entity valuesPiotr Trojanek1-29/+9
When killing known values of assignable entities we iterated from First_Entity and then again from First_Private_Entity. This second iteration was unnecessary, because the entity chain that starts with First_Entity contains all entities, including the private ones. This is just a performance improvement; the behavior is unchanged. gcc/ada/ * sem_util.adb (Kill_Current_Values): Only iterate from First_Entity through Next_Entity.
2022-11-04ada: Simplify detection of controlling formalsPiotr Trojanek1-3/+3
When detecting controlling formals we are only interested in formal parameters and not in other entities. gcc/ada/ * sem_ch6.adb (Controlling_Formal): Iterate with First/Next_Formal and not with First/Next_Entity.
2022-11-04ada: Skip dynamic interface conversion under configurable runtimeJavier Miranda1-1/+1
gcc/ada/ * exp_disp.adb (Expand_Interface_Conversion): Fix typo in comment.
2022-11-04ada: Skip dynamic interface conversion under configurable runtimeJavier Miranda2-14/+33
gcc/ada/ * exp_disp.adb (Expand_Interface_Conversion): Under configurable runtime, when the target type is an interface that is an ancestor of the operand type, skip generating code to displace the pointer to reference the target dispatch table. * sem_disp.adb (Propagate_Tag): Handle class-wide types when checking for the addition of an implicit interface conversion.
2022-11-04ada: Fix typoRonan Desplanques2-2/+2
Fix typo in documentation. gcc/ada/ * doc/gnat_rm/standard_library_routines.rst: Fix typo. * gnat_rm.texi: Regenerate.
2022-11-04ada: Remove sa_messagesGhjuvan Lacambre2-806/+0
Spark and CodePeer do not depend on this unit anymore. gcc/ada/ * sa_messages.ads, sa_messages.adb: Remove files.
2022-11-04ada: Refactor: replace uses of `not Present(X)` with `No (X)`Ghjuvan Lacambre27-77/+74
`No (X)` is essentially `not Present (X)`, there's no reason for not using this shorter form. gcc/ada/ * checks.adb, exp_atag.adb, exp_attr.adb, exp_ch4.adb, exp_ch6.adb, exp_ch7.adb, exp_dbug.adb, exp_disp.adb, exp_unst.adb, exp_util.adb, freeze.adb, layout.adb, pprint.adb, rtsfind.adb, sem_aggr.adb, sem_attr.adb, sem_case.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_dim.adb, sem_prag.adb, sem_util.adb, sem_warn.adb: Replace uses of `not Present (X)` with `No (X)`.
2022-11-04ada: Fix various typos in node and entity description commentsPiotr Trojanek2-12/+14
Fix typos in units that describe GNAT abstract syntax tree. gcc/ada/ * einfo.ads: Fix typos in comments; refill as necessary. * sinfo.ads: Likewise.
2022-11-04ada: Fix various typos in GNAT RMPiotr Trojanek6-22/+22
List of unknown words in files can be produced with: $ cat *.rst | ispell -l | tr '[:upper:]' '[:lower:]' | sort | uniq | less and can be easily filtered with eyes. gcc/ada/ * doc/gnat_rm/implementation_defined_aspects.rst: Fix typos. * doc/gnat_rm/implementation_defined_attributes.rst: Likewise * doc/gnat_rm/implementation_defined_characteristics.rst: Likewise * doc/gnat_rm/implementation_defined_pragmas.rst: Likewise * doc/gnat_rm/standard_library_routines.rst: Likewise. * gnat_rm.texi: Regenerate.
2022-11-04ada: Improve efficiency of scope stack restorationPiotr Trojanek1-2/+2
We save/restore visibility by setting the Is_Immediately_Visible flag and appending entities to / removing them from the tail of an element list. However, the Is_Immediately_Visible flag can be restored in any order, while the element list is singly-linked and removal from the tail is inefficient. This change removes a performance hot spot, which accounted for up to 10% of compilation time of complex applications (e.g. QGen), at least as measured on GNAT built with profiling support. gcc/ada/ * sem_ch8.adb (Restore_Scope_Stack): Remove elements from the head and not the tail of an element list.
2022-11-04ada: Small editorial changes to documentation commentsRonan Desplanques1-4/+4
gcc/ada/ * sinfo.ads: Small editorial changes.
2022-11-04ada: Allow enabling a restricted set of language extensions.Steve Baird22-95/+212
The -gnatX switch (and the related Extensions_Allowed pragma) is currently a two-valued all-or-nothing option. Add support for enabling a curated subset of language extensions without enabling others via the -gnatX switch and for enabling all language extensions via the new -gnatX0 switch. Similarly, the existing "ON" argument for the Extensions_Allowed pragma now only enables the curated subset; the new argument "ALL" enables all language extensions. The subset of language extensions currently includes prefixed-view notation with an untagged prefix, fixed-low-bound array subtypes, and casing on composite values. gcc/ada/ * opt.ads: Replace Ada_Version_Type enumeration literal Ada_With_Extensions with two literals, Ada_With_Core_Extensions and Ada_With_All_Extensions. Update uses of the deleted literal. Replace Extensions_Allowed function with two functions: All_Extensions_Allowed and Core_Extensions_Allowed. * errout.ads, errout.adb: Add Boolean parameter to Error_Msg_GNAT_Extension to indicate whether the construct in question belongs to the curated subset. * exp_ch5.adb, par-ch4.adb, sem_case.adb, sem_ch3.adb: * sem_ch4.adb, sem_ch5.adb, sem_ch8.adb: Replace calls to Extensions_Allowed with calls to Core_Extensions_Allowed for constructs that are in the curated subset. * sem_attr.adb, sem_ch13.adb, sem_eval.adb, sem_util.adb: Replace calls to Extensions_Allowed with calls to All_Extensions_Allowed for constructs that are not in the curated subset. * par-ch3.adb: Override default for new parameter in calls to Error_Msg_GNAT_Extension for constructs in the curated subset. * par-prag.adb: Add Boolean parameter to Check_Arg_Is_On_Or_Off to also allow ALL. Set Opt.Ada_Version appropriately for ALL or ON arguments. * sem_prag.adb: Allowed ALL argument for an Extensions_Allowed pragma. Set Opt.Ada_Version appropriately for ALL or ON arguments. * switch-c.adb: The -gnatX switch now enables only the curated subset of language extensions (formerly it enabled all of them); the new -gnatX0 switch enables all of them. * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Document new "-gnatX0" switch and update documentation for "-gnatX" switch. * doc/gnat_rm/implementation_defined_pragmas.rst: Document new ALL argument for pragma Extensions_Allowed and update documentation for the ON argument. Delete mention of Ada 2022 Reduce attribute as an extension. * gnat_rm.texi, gnat_ugn.texi: Regenerate.
2022-11-04ada: Generate missing object decls for adainit/adafinal registration callsSteve Baird1-5/+14
A previous change on this ticket introduced calls to CUDA_Register_Function for adainit and adafinal, but failed to introduce declarations for the C string variables that are initialized and then passed as actual parameters in this call. Provide the missing declarations (and, incidentally, change the names of the two variables). gcc/ada/ * bindgen.adb: Introduce two new string constants for the names of the C-String variables that are assigned the names for adainit and adafinal. Replace string literals in Gen_CUDA_Init with references to these constants. In Gen_CUDA_Defs, generate C-String variable declarations where these constants are the names of the variables.
2022-11-04ada: Support lock-free protected objects with pragma Initialize_ScalarsPiotr Trojanek1-0/+9
In general, protected subprograms are only eligible for a lock-free expansion if they do not reference global assignable objects. However, it seems reasonable to ignore references to variables in System.Scalar_Values, which are generated when pragma Initialize_Scalars is active. Such references appear, for example, when protected subprogram has formal parameters of mode out. gcc/ada/ * sem_ch9.adb (Satisfies_Lock_Free_Requirements): Ignore references to global variables inserted due to pragma Initialize_Scalars.
2022-11-04ada: Remove VxWorks 6 and VxWorks 653 2.x content from the UGXCedric Landet3-6/+6
Because they are not supported anymore. gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst: Remove VxWorks version 6. * gnat_rm.texi, gnat_ugn.texi: Regenerate.
2022-11-04ada: Reject expanded global names in lock-free protected objectsPiotr Trojanek1-2/+2
Lock-free expansion of protected subprograms is only possible when there are no references to global assignable objects. We only detected such references when they appeared as direct names, but we must similarly detect expanded names. gcc/ada/ * sem_ch9.adb (Satisfies_Lock_Free_Requirements): Detect references via expanded names.
2022-11-04ada: Generate host-side CUDA_Register_Function calls for device's ↵Steve Baird1-17/+49
adainit/adafinal To invoke a device-side subprogram from the host (via a CUDA_execute pragma), the subprogram also has to be registered by calling CUDA_Register_Function. The host-side adainit and adafinal procedures need to invoke the corresponding device-side procedures, so corresponding CUDA_Register_Function calls need to be generated. gcc/ada/ * bindgen.adb (Gen_CUDA_Init): Move existing loop body into a new local procedure, Gen_CUDA_Register_Function_Call, and replace that loop body with a call to this procedure. This first part is just semantics-preserving refactoring. The second part is to add Gen_CUDA_Register_Function_Call calls after the loop for the device-side adainit and adafinal procedures.
2022-10-12Daily bump.GCC Administrator1-0/+5
2022-10-12Enable support for atomic primitives on SPARC/LinuxEric Botcazou1-0/+1
The SPARC/Linux port is very similar to the SPARC/Solaris port nowadays so it makes sense to copy the setting of the support for atomic primitives. This fixes the single regression in the gnat.dg testsuite: FAIL: gnat.dg/prot7.adb (test for excess errors) gcc/ada/ * libgnat/system-linux-sparc.ads (Support_Atomic_Primitives): New constant set to True.
2022-10-07Daily bump.GCC Administrator1-0/+147
2022-10-06ada: Implementation of support for storage models in gigiEric Botcazou7-61/+605
It is based on a new LOAD_EXPR node in GENERIC that is later turned into a bona-fide temporary during gimplification. gcc/ada/ * gcc-interface/ada-tree.def (LOAD_EXPR): New expression code. * gcc-interface/gigi.h (build_storage_model_load): Declare. (build_storage_model_store): Likewise. (instantiate_load_in_expr): Likewise. (INSTANTIATE_LOAD_IN_EXPR): New macro. (instantiate_load_in_array_ref): Declare. * gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Type>: Set a fake discriminant number on the fields of the template type. (gnat_to_gnu_field): Use integer for DECL_DISCRIMINANT_NUMBER. * gcc-interface/misc.cc (gnat_init_ts): Mark LOAD_EXPR as typed. * gcc-interface/trans.cc (fold_constant_decl_in_expr) <ARRAY_REF>: Also preserve the 4th operand. (Attribute_to_gnu): Deal with LOAD_EXPR of unconstrained array type. <Attr_Size>: Call INSTANTIATE_LOAD_IN_EXPR for a storage model. <Attr_Length>: Likewise. <Attr_Bit_Position>: Likewise. (get_storage_model): New function. (get_storage_model_access): Likewise. (storage_model_access_required_p): Likewise. (Call_to_gnu): Add GNAT_STORAGE_MODEL parameter and deal with it. Also deal with actual parameters that have a storage model. (gnat_to_gnu) <N_Object_Declaratio>: Adjust call to Call_to_gnu. <N_Explicit_Dereference>: Deal with a storage model access. <N_Indexed_Component>: Likewise. <N_Slice>: Likewise. <N_Selected_Component>: Likewise. <N_Assignment_Statement>: Adjust call to Call_to_gnu. Deal with a storage model access either on the LHS, on the RHS or on both. <N_Function_Cal>: Adjust call to Call_to_gnu. <N_Free_Statement>: Deal with a pool that is a storage model. Replace test for UNCONSTRAINED_ARRAY_REF with test on the type. (gnat_gimplify_expr) <CALL_EXPR>: Tidy up. <LOAD_EXPR>: New case. <UNCONSTRAINED_ARRAY_REF>: Move down. * gcc-interface/utils.cc (maybe_unconstrained_array): Deal with a LOAD_EXPR by recursing on its first operand. * gcc-interface/utils2.cc (build_allocator): Deal with a pool that is a storage model. (build_storage_model_copy): New function. (build_storage_model_load): Likewise. (build_storage_model_store): Likewise. (instantiate_load_in_expr): Likewise. (instantiate_load_in_array_ref): Likewise. (gnat_rewrite_reference) <ARRAY_REF>: Also preserve the 4th operand. (get_inner_constant_reference) <ARRAY_REF>: Remove useless test. (gnat_invariant_expr) <ARRAY_REF>: Rewrite test.
2022-10-06ada: Minor potential bug in sem_ch6.adbSteve Baird1-1/+1
In sem_ch6.adb, the procedure Analyze_Procedure_Call is preceded with a comment: -- WARNING: This routine manages Ghost regions. Return statements must be -- replaced by gotos that jump to the end of the routine and restore the -- Ghost mode. Correct a violation of this comment. This is a one-line change. gcc/ada/ * sem_ch6.adb (Analyze_Procedure_Call): Replace "return;" with "goto Leave;", as per comment preceding body of Analyze_Procedure_Call.
2022-10-06ada: Reject conditional goto in lock-free protected subprogramsPiotr Trojanek1-1/+1
In lock-free protected subprograms we don't allow goto statements; likewise, we now reject conditional goto statements. This fix only affects semantic checking mode with switch -gnatc. In ordinary compilation we already rejected conditional goto after it was expanded into ordinary goto. gcc/ada/ * sem_ch9.adb (Allows_Lock_Free_Implementation): Reject conditional goto statements.
2022-10-06ada: Cleanup related to lock-free protected subprogramsPiotr Trojanek3-11/+9
Cleanup code and documentation; semantics is unaffected. gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst (Lock_Free): Remove inconsistent periods that end item descriptions. * sem_ch9.adb (Allows_Lock_Free_Implementation): Remove unnecessary guard against an empty list of parameters; replace low-level entity kind membership test with a high-level query; refill error message. * gnat_rm.texi: Regenerate.
2022-10-06ada: hardened conditionals: exemplify codegen changesAlexandre Oliva2-4/+94
gcc/ada/ * doc/gnat_rm/security_hardening_features.rst: Add examples of codegen changes in hardened conditionals. * gnat_rm.texi: Regenerate.
2022-10-06ada: hardened booleans: exemplify codegen changesAlexandre Oliva2-7/+48
Show the sort of code that is to be expected from using hardened booleans in Ada code. Mention that C traps instead of raising exceptions. gcc/ada/ * doc/gnat_rm/security_hardening_features.rst: Add examples of codegen changes in hardened booleans. Mention that C traps where Ada raises exceptions. * gnat_rm.texi: Regenerate.
2022-10-06ada: stack scrubbing: exemplify codegen changesAlexandre Oliva2-2/+103
gcc/ada/ * doc/gnat_rm/security_hardening_features.rst: Add examples of codegen changes in stack scrubbing. * gnat_rm.texi: Regenerate.
2022-10-06ada: Fix inserting of validity checks in lock-free protected subprogramsPiotr Trojanek1-1/+1
Validity checks for statements in a lock-free implementation of protected subprogram were wrongly inserted in front of the original statements. This happened because the lock-free implementation was created as a shallow copy, where only the protected body statements were copied while its children still had the Parent pointing to the original statements. gcc/ada/ * exp_ch9.adb (Build_Lock_Free_Protected_Subprogram_Body): Replace shallow copy of protected statements with a deep copy.
2022-10-06ada: Add C declarations for Storage Model supportMarc Poulhiès2-0/+20
Add needed C declarations for Storage Model support in gigi. gcc/ada/ * fe.h (Has_Storage_Model_Type_Aspect) (Has_Designated_Storage_Model_Aspect, Storage_Model_Object) (Storage_Model_Copy_From, Storage_Model_Copy_To): Add declarations. * sem_util.ads: Add WARNING markers for functions for which a new C declaration has been added in fe.h