❌ About FreshRSS

Normal view

There are new articles available, click to refresh the page.
Today β€” 28 September 2023Change logs
Before yesterdayChange logs

ada: Fix missing call to Finalize_Protection for simple protected objects

18 September 2023 at 07:14
ada: Fix missing call to Finalize_Protection for simple protected objects

There is a glitch in Exp_Ch7.Build_Finalizer causing the finalizer to do
nothing for simple protected objects.

The change also removes redundant calls to the Is_Simple_Protected_Type
predicate and fixes a minor inconsistency between Requires_Cleanup_Actions
and Build_Finalizer for this case.

gcc/ada/

	* exp_ch7.adb (Build_Finalizer.Process_Declarations): Remove call
	to Is_Simple_Protected_Type as redundant.
	(Build_Finalizer.Process_Object_Declaration): Do not retrieve the
	corresponding record type for simple protected objects. Make the
	flow of control more explicit in their specific processing.
	* exp_util.adb (Requires_Cleanup_Actions): Return false for simple
	protected objects present in library-level package bodies for the
	sake of consistency with Build_Finalizer and remove call to
	Is_Simple_Protected_Type as redundant.
  • [DBH] gcc/ada/exp_ch7.adb
  • [DBH] gcc/ada/exp_util.adb
  • 18 September 2023 at 07:14

ada: Fix deferred constant wrongly rejected

16 September 2023 at 18:29
ada: Fix deferred constant wrongly rejected

This recent regression occurs when the nominal subtype of the constant is a
discriminated record type with default discriminants.

gcc/ada/
	PR ada/110488
	* sem_ch3.adb (Analyze_Object_Declaration): Do not build a default
	subtype for a deferred constant in the definite case too.
  • [DBH] gcc/ada/sem_ch3.adb
  • 16 September 2023 at 18:29

ada: Fix missing finalization of extended return object on abnormal completion

14 September 2023 at 14:42
ada: Fix missing finalization of extended return object on abnormal completion

This happens in the case of a nonlimited return type and is a fallout of the
optimization recently implemented for them.

gcc/ada/

	* einfo.ads (Status_Flag_Or_Transient_Decl): Remove ??? comment.
	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Extend the
	handling of finalizable return objects to the non-BIP case.
	* exp_ch7.adb (Build_Finalizer.Process_Declarations): Adjust the
	comment accordingly.
	* exp_util.adb (Requires_Cleanup_Actions): Likewise.
  • [DBH] gcc/ada/einfo.ads
  • [DBH] gcc/ada/exp_ch6.adb
  • [DBH] gcc/ada/exp_ch7.adb
  • [DBH] gcc/ada/exp_util.adb
  • 14 September 2023 at 14:42

ada: Fix unnesting generated loops with nested finalization procedure

14 September 2023 at 11:32
ada: Fix unnesting generated loops with nested finalization procedure

The compiler can generate loops for creating array aggregates, for
example used during the initialization of variable. If the component
type of the array element requires finalization, the compiler also
creates a block and a nested procedure that need to be correctly
unnested if unnesting is enabled. During the unnesting transformation,
the scopes for these inner blocks need to be fixed and set to the
enclosing loop entity.

gcc/ada/

	* exp_ch7.adb (Contains_Subprogram): Recursively search for subp
	in loop's statements.
	(Unnest_Loop)<Fixup_Inner_Scopes>: New.
	(Unnest_Loop): Rename local variable for more clarity.
	* exp_unst.ads: Refresh comment.
  • [DBH] gcc/ada/exp_ch7.adb
  • [DBH] gcc/ada/exp_unst.ads
  • 14 September 2023 at 11:32

ada: Define CHERI exception types

12 September 2023 at 09:25
ada: Define CHERI exception types

These exception types map to the CHERI hardware exceptions that are
triggered due to misuse of capabilities.

gcc/ada/

	* libgnat/i-cheri.ads (Capability_Bound_Error)
	(Capability_Permission_Error, Capability_Sealed_Error)
	(Capability_Tag_Error): New, define CHERI exception types.
  • [DBH] gcc/ada/libgnat/i-cheri.ads
  • 12 September 2023 at 09:25

ada: Add CHERI variant of System.Stream_Attributes

23 August 2023 at 13:24
ada: Add CHERI variant of System.Stream_Attributes

Reading and writing System.Address to a stream on CHERI targets does
not preserve the capability tag; it will always be invalid since
a valid capability cannot be created out of thin air. Reading an Address
from a stream would therefore never yield a capability that can be
dereferenced.

This patch introduces a CHERI variant of System.Stream_Attributes that
raises Program_Error when attempting to read a System.Address from a stream.

gcc/ada/

	* libgnat/s-stratt__cheri.adb: New file
  • [DBH] gcc/ada/libgnat/s-stratt__cheri.adb
  • 23 August 2023 at 13:24

ada: Update personality function for CHERI purecap

23 August 2023 at 13:13
ada: Update personality function for CHERI purecap

This makes two changes to the GNAT personality function to reflect
differences for pure capability CHERI/Morello. The first is to use
__builtin_code_address_from_pointer to drop the LSB from Morello
code pointers when searching through call-site tables (without this
we would never find the right landing pad when unwinding).

The second change is to reflect the change in the exception table
format for pure-capability Morello where the landing pad is a capability
indirected by an offset in the call-site table.

gcc/ada/

	* raise-gcc.c (get_ip_from_context): Adapt for CHERI purecap
	(get_call_site_action_for): Adapt for CHERI purecap
  • [DBH] gcc/ada/raise-gcc.c
  • 23 August 2023 at 13:13

ada: Fix conversions between addresses and integers

23 August 2023 at 12:00
ada: Fix conversions between addresses and integers

On CHERI targets the size of System.Address and Integer_Address
(or similar) are not the same. The operations in System.Storage_Elements
should be used to convert between integers and addresses.

gcc/ada/

	* libgnat/a-tags.adb (To_Tag): Use System.Storage_Elements for
	integer to address conversion.
	* libgnat/s-putima.adb (Put_Image_Pointer): Likewise.
  • [DBH] gcc/ada/libgnat/a-tags.adb
  • [DBH] gcc/ada/libgnat/s-putima.adb
  • 23 August 2023 at 12:00

ada: TSS finalize address subprogram generation for constrained...

17 September 2023 at 15:00
ada: TSS finalize address subprogram generation for constrained...

...subtypes of unconstrained synchronized private extensions should take
care to designate the corresponding record of the underlying concurrent
type.

When generating TSS finalize address subprograms for class-wide types of
constrained root types, it follows the parent chain looking for the
first "non-constrained" type. It is possible that such a type is a
private extension with the β€œsynchronized” keyword, in which case the
underlying type is a concurrent type. When that happens, the designated
type of the finalize address subprogram should be the corresponding
record’s class-wide-type.

gcc/ada/ChangeLog:
	* exp_ch3.adb (Expand_Freeze_Class_Wide_Type): Expanded comments
	explaining why TSS Finalize_Address is not generated for
	concurrent class-wide types.
	* exp_ch7.adb (Make_Finalize_Address_Stmts): Handle cases where the
	underlying non-constrained parent type is a concurrent type, and
	adjust the designated type to be the corresponding record’s
	class-wide type.

gcc/testsuite/ChangeLog:

	* gnat.dg/sync_tag_finalize.adb: New test.

Signed-off-by: Richard Wai <[email protected]>
  • [DBH] gcc/ada/exp_ch3.adb
  • [DBH] gcc/ada/exp_ch7.adb
  • 17 September 2023 at 15:00

ada: Refine upper array bound for bit packed array

8 September 2023 at 15:15
ada: Refine upper array bound for bit packed array

When using bit-packed arrays, the compiler creates new array subtypes of
1-bit component indexed by integers. The existing routine checks the
index subtype to find the min/max values. Bit-packed arrays being
indexed by integers, the routines gives up as returning the maximum
possible integer carries no useful information.

This change adds a simple max_value routine that can evaluate very
simple expressions by substituting variables by their min/max value.
Bit-packed array subtypes are currently declared as:

  subtype bp_array is packed_bytes1 (0 .. integer((1 * Var +  7) / 8 - 1));

The simple max_value evaluator handles the bare minimum for this
expression pattern.

gcc/ada/ChangeLog:

	* gcc-interface/utils.cc (max_value): New.
	* gcc-interface/gigi.h (max_value): New.
	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Array_Subtype>:
	When computing gnu_min/gnu_max, try to use max_value if there is
	an initial expression.
  • [DBH] gcc/ada/gcc-interface/decl.cc
  • [DBH] gcc/ada/gcc-interface/gigi.h
  • [DBH] gcc/ada/gcc-interface/utils.cc
  • 8 September 2023 at 15:15
❌
❌