aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog65
-rw-r--r--gcc/ada/atree.ads9
-rw-r--r--gcc/ada/exp_aggr.adb13
-rw-r--r--gcc/ada/exp_ch7.adb2
-rw-r--r--gcc/ada/gcc-interface/decl.cc14
-rw-r--r--gcc/ada/gcc-interface/misc.cc7
-rw-r--r--gcc/ada/libgnat/a-direct.adb52
-rw-r--r--gcc/ada/nlists.ads3
-rw-r--r--gcc/ada/sem_attr.adb25
-rw-r--r--gcc/ada/sem_ch10.adb170
-rw-r--r--gcc/ada/sem_util.adb9
-rw-r--r--gcc/ada/sem_util.ads3
-rw-r--r--gcc/ada/sinfo.ads31
-rw-r--r--gcc/ada/types.ads4
14 files changed, 257 insertions, 150 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f549aa2..6cf1a63 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,68 @@
+2023-10-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.cc (inline_status_for_subprog): Minor tweak.
+ (gnat_to_gnu_field): Try harder to get a packable form of the type
+ for a bitfield.
+
+2023-10-10 Ronan Desplanques <desplanques@adacore.com>
+
+ * libgnat/a-direct.adb (Start_Search_Internal): Tweak subprogram
+ body.
+
+2023-10-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_util.ads (Set_Scope_Is_Transient): Delete.
+ * sem_util.adb (Set_Scope_Is_Transient): Likewise.
+ * exp_ch7.adb (Create_Transient_Scope): Set Is_Transient directly.
+
+2023-10-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Is_Build_In_Place_Aggregate_Return): Return true
+ if the aggregate is a dependent expression of a conditional
+ expression being returned from a build-in-place function.
+
+2023-10-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/111434
+ * sem_ch10.adb (Replace): New procedure to replace an entity with
+ another on the homonym chain.
+ (Install_Limited_With_Clause): Rename Non_Lim_View to Typ for the
+ sake of consistency. Call Replace to do the replacements and split
+ the code into the regular and the special cases. Add debuggging
+ output controlled by -gnatdi.
+ (Install_With_Clause): Print the Parent_With and Implicit_With flags
+ in the debugging output controlled by -gnatdi.
+ (Remove_Limited_With_Unit.Restore_Chain_For_Shadow (Shadow)): Rewrite
+ using a direct replacement of E4 by E2. Call Replace to do the
+ replacements. Add debuggging output controlled by -gnatdi.
+
+2023-10-10 Ronan Desplanques <desplanques@adacore.com>
+
+ * libgnat/a-direct.adb: Fix filesystem entry filtering.
+
+2023-10-10 Ronan Desplanques <desplanques@adacore.com>
+
+ * atree.ads, nlists.ads, types.ads: Remove references to extended
+ nodes. Fix typo.
+ * sinfo.ads: Likewise and fix position of
+ Comes_From_Check_Or_Contract description.
+
+2023-10-10 Javier Miranda <miranda@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Protect the frontend against
+ replacing 'Size by its static value if 'Size is not known at
+ compile time and we are processing pragmas Compile_Time_Warning or
+ Compile_Time_Errors.
+
+2023-10-03 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc-interface/misc.cc: Use text_info ctor.
+
+2023-10-02 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc-interface/misc.cc (gnat_post_options): Update for renaming
+ of diagnostic_context's show_caret to m_source_printing.enabled.
+
2023-09-26 Eric Botcazou <ebotcazou@adacore.com>
* exp_ch7.adb (Build_Finalizer.Process_Declarations): Remove call
diff --git a/gcc/ada/atree.ads b/gcc/ada/atree.ads
index abe5cc5..2ff65d2 100644
--- a/gcc/ada/atree.ads
+++ b/gcc/ada/atree.ads
@@ -252,7 +252,7 @@ package Atree is
-- The usual approach is to build a new node using this function and
-- then, using the value returned, use the Set_xxx functions to set
-- fields of the node as required. New_Node can only be used for
- -- non-entity nodes, i.e. it never generates an extended node.
+ -- non-entity nodes.
--
-- If we are currently parsing, as indicated by a previous call to
-- Set_Comes_From_Source_Default (True), then this call also resets
@@ -308,8 +308,7 @@ package Atree is
-- returns Empty, and New_Copy (Error) returns Error. Note that, unlike
-- Copy_Separate_Tree, New_Copy does not recursively copy any descendants,
-- so in general parent pointers are not set correctly for the descendants
- -- of the copied node. Both normal and extended nodes (entities) may be
- -- copied using New_Copy.
+ -- of the copied node.
function Relocate_Node (Source : Node_Id) return Node_Id;
-- Source is a non-entity node that is to be relocated. A new node is
@@ -359,7 +358,7 @@ package Atree is
-- caller, according to context.
procedure Extend_Node (Source : Node_Id);
- -- This turns a node into an entity; it function is used only by Sinfo.CN.
+ -- This turns a node into an entity; it is only used by Sinfo.CN.
type Ignored_Ghost_Record_Proc is access procedure (N : Node_Or_Entity_Id);
@@ -540,7 +539,7 @@ package Atree is
-- newly constructed replacement subtree. The actual mechanism is to swap
-- the contents of these two nodes fixing up the parent pointers of the
-- replaced node (we do not attempt to preserve parent pointers for the
- -- original node). Neither Old_Node nor New_Node can be extended nodes.
+ -- original node).
-- ??? The above explanation is incorrect, instead Copy_Node is called.
--
-- Note: New_Node may not contain references to Old_Node, for example as
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 165f517..e5f3632 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -173,8 +173,11 @@ package body Exp_Aggr is
------------------------------------------------------
function Is_Build_In_Place_Aggregate_Return (N : Node_Id) return Boolean;
- -- True if N is an aggregate (possibly qualified or converted) that is
- -- being returned from a build-in-place function.
+ -- True if N is an aggregate (possibly qualified or a dependent expression
+ -- of a conditional expression, and possibly recursively so) that is being
+ -- returned from a build-in-place function. Such qualified and conditional
+ -- expressions are transparent for this purpose because an enclosing return
+ -- is propagated resp. distributed into these expressions by the expander.
function Build_Record_Aggr_Code
(N : Node_Id;
@@ -8463,7 +8466,11 @@ package body Exp_Aggr is
P : Node_Id := Parent (N);
begin
- while Nkind (P) = N_Qualified_Expression loop
+ while Nkind (P) in N_Case_Expression
+ | N_Case_Expression_Alternative
+ | N_If_Expression
+ | N_Qualified_Expression
+ loop
P := Parent (P);
end loop;
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index 5049de54..00b7692 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -4529,7 +4529,7 @@ package body Exp_Ch7 is
Push_Scope (Trans_Scop);
Scope_Stack.Table (Scope_Stack.Last).Node_To_Be_Wrapped := Context;
- Set_Scope_Is_Transient;
+ Scope_Stack.Table (Scope_Stack.Last).Is_Transient := True;
-- The transient scope must also manage the secondary stack
diff --git a/gcc/ada/gcc-interface/decl.cc b/gcc/ada/gcc-interface/decl.cc
index 5e16b56..20ab185 100644
--- a/gcc/ada/gcc-interface/decl.cc
+++ b/gcc/ada/gcc-interface/decl.cc
@@ -5114,7 +5114,7 @@ inline_status_for_subprog (Entity_Id subprog)
tree gnu_type;
/* This is a kludge to work around a pass ordering issue: for small
- record types with many components, i.e. typically bit-fields, the
+ record types with many components, i.e. typically bitfields, the
initialization routine can contain many assignments that will be
merged by the GIMPLE store merging pass. But this pass runs very
late in the pipeline, in particular after the inlining decisions
@@ -7702,6 +7702,18 @@ gnat_to_gnu_field (Entity_Id gnat_field, tree gnu_record_type, int packed,
gnu_field_type = maybe_pad_type (gnu_field_type, gnu_size, 0, gnat_field,
false, definition, true);
+ /* For a bitfield, if the type still has BLKmode, try again to change it
+ to an integral mode form. This may be necessary on strict-alignment
+ platforms with a size clause that is much larger than the field type,
+ because maybe_pad_type has preserved the alignment of the field type,
+ which may be too low for the new size. */
+ if (!needs_strict_alignment
+ && RECORD_OR_UNION_TYPE_P (gnu_field_type)
+ && !TYPE_FAT_POINTER_P (gnu_field_type)
+ && TYPE_MODE (gnu_field_type) == BLKmode
+ && is_bitfield)
+ gnu_field_type = make_packable_type (gnu_field_type, true, 1);
+
/* If a padding record was made, declare it now since it will never be
declared otherwise. This is necessary to ensure that its subtrees
are properly marked. */
diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc
index 3b21bf5..453ae80 100644
--- a/gcc/ada/gcc-interface/misc.cc
+++ b/gcc/ada/gcc-interface/misc.cc
@@ -269,7 +269,7 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
/* No caret by default for Ada. */
if (!OPTION_SET_P (flag_diagnostics_show_caret))
- global_dc->show_caret = false;
+ global_dc->m_source_printing.enabled = false;
/* Copy global settings to local versions. */
gnat_encodings = global_options.x_gnat_encodings;
@@ -293,7 +293,6 @@ static void
internal_error_function (diagnostic_context *context, const char *msgid,
va_list *ap)
{
- text_info tinfo;
char *buffer, *p, *loc;
String_Template temp, temp_loc;
String_Pointer sp, sp_loc;
@@ -309,9 +308,7 @@ internal_error_function (diagnostic_context *context, const char *msgid,
pp_clear_output_area (context->printer);
/* Format the message into the pretty-printer. */
- tinfo.format_spec = msgid;
- tinfo.args_ptr = ap;
- tinfo.err_no = errno;
+ text_info tinfo (msgid, ap, errno);
pp_format_verbatim (context->printer, &tinfo);
/* Extract a (writable) pointer to the formatted text. */
diff --git a/gcc/ada/libgnat/a-direct.adb b/gcc/ada/libgnat/a-direct.adb
index 4b08d41..594971c 100644
--- a/gcc/ada/libgnat/a-direct.adb
+++ b/gcc/ada/libgnat/a-direct.adb
@@ -1379,13 +1379,21 @@ package body Ada.Directories is
Compose (Directory, File_Name) & ASCII.NUL;
Path : String renames
Path_C (Path_C'First .. Path_C'Last - 1);
- Found : Boolean := False;
Attr : aliased File_Attributes;
Exists : Integer;
Error : Integer;
- Kind : File_Kind;
- Size : File_Size;
+ type Result (Found : Boolean := False) is record
+ case Found is
+ when True =>
+ Kind : File_Kind;
+ Size : File_Size;
+ when False =>
+ null;
+ end case;
+ end record;
+
+ Res : Result := (Found => False);
begin
-- Get the file attributes for the directory item
@@ -1414,32 +1422,30 @@ package body Ada.Directories is
elsif Exists = 1 then
if Is_Regular_File_Attr (Path_C'Address, Attr'Access) = 1
- and then Filter (Ordinary_File)
then
- Found := True;
- Kind := Ordinary_File;
- Size :=
- File_Size
- (File_Length_Attr
- (-1, Path_C'Address, Attr'Access));
+ if Filter (Ordinary_File) then
+ Res := (Found => True,
+ Kind => Ordinary_File,
+ Size => File_Size
+ (File_Length_Attr
+ (-1, Path_C'Address, Attr'Access)));
+ end if;
elsif Is_Directory_Attr (Path_C'Address, Attr'Access) = 1
- and then Filter (File_Kind'First)
then
- Found := True;
- Kind := File_Kind'First;
- -- File_Kind'First is used instead of Directory due
- -- to a name overload issue with the procedure
- -- parameter Directory.
- Size := 0;
+ if Filter (File_Kind'First) then
+ Res := (Found => True,
+ Kind => File_Kind'First,
+ Size => 0);
+ end if;
elsif Filter (Special_File) then
- Found := True;
- Kind := Special_File;
- Size := 0;
+ Res := (Found => True,
+ Kind => Special_File,
+ Size => 0);
end if;
- if Found then
+ if Res.Found then
Search.State.Dir_Contents.Append
(Directory_Entry_Type'
(Valid => True,
@@ -1447,9 +1453,9 @@ package body Ada.Directories is
To_Unbounded_String (File_Name),
Full_Name => To_Unbounded_String (Path),
Attr_Error_Code => 0,
- Kind => Kind,
+ Kind => Res.Kind,
Modification_Time => Modification_Time (Path),
- Size => Size));
+ Size => Res.Size));
end if;
end if;
end;
diff --git a/gcc/ada/nlists.ads b/gcc/ada/nlists.ads
index 5e88032..7afe80f 100644
--- a/gcc/ada/nlists.ads
+++ b/gcc/ada/nlists.ads
@@ -43,9 +43,6 @@ package Nlists is
-- this header, which may be used to access the nodes in the list using
-- the set of routines that define this interface.
- -- Note: node lists can contain either nodes or entities (extended nodes)
- -- or a mixture of nodes and extended nodes.
-
function In_Same_List (N1, N2 : Node_Or_Entity_Id) return Boolean;
pragma Inline (In_Same_List);
-- Equivalent to List_Containing (N1) = List_Containing (N2)
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index d03761b..3eba3a2 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -6457,17 +6457,30 @@ package body Sem_Attr is
or else Size_Known_At_Compile_Time (Entity (P)))
then
declare
- Siz : Uint;
+ Prefix_E : Entity_Id := Entity (P);
+ Siz : Uint;
begin
- if Known_Static_RM_Size (Entity (P)) then
- Siz := RM_Size (Entity (P));
+ -- Handle private and incomplete types
+
+ if Present (Underlying_Type (Prefix_E)) then
+ Prefix_E := Underlying_Type (Prefix_E);
+ end if;
+
+ if Known_Static_RM_Size (Prefix_E) then
+ Siz := RM_Size (Prefix_E);
else
- Siz := Esize (Entity (P));
+ Siz := Esize (Prefix_E);
end if;
- Rewrite (N, Make_Integer_Literal (Sloc (N), Siz));
- Analyze (N);
+ -- Protect the frontend against cases where the attribute
+ -- Size_Known_At_Compile_Time is set, but the Esize value
+ -- is not available (see Einfo.ads).
+
+ if Present (Siz) then
+ Rewrite (N, Make_Integer_Literal (Sloc (N), Siz));
+ Analyze (N);
+ end if;
end;
end if;
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index a6cbe46..ba4beae 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -238,6 +238,9 @@ package body Sem_Ch10 is
-- Reset all visibility flags on unit after compiling it, either as a main
-- unit or as a unit in the context.
+ procedure Replace (Old_E, New_E : Entity_Id);
+ -- Replace Old_E by New_E on visibility list
+
procedure Unchain (E : Entity_Id);
-- Remove single entity from visibility list
@@ -5310,15 +5313,12 @@ package body Sem_Ch10 is
and then not Is_Child_Unit (Lim_Typ)
then
declare
- Non_Lim_View : constant Entity_Id :=
- Non_Limited_View (Lim_Typ);
+ Typ : constant Entity_Id := Non_Limited_View (Lim_Typ);
Prev : Entity_Id;
begin
- Prev := Current_Entity (Lim_Typ);
-
- -- Replace Non_Lim_View in the homonyms list, so that the
+ -- Replace Typ by Lim_Typ in the homonyms list, so that the
-- limited view becomes available.
-- If the nonlimited view is a record with an anonymous
@@ -5350,38 +5350,47 @@ package body Sem_Ch10 is
--
-- [*] denotes the visible entity (Current_Entity)
- if Prev = Non_Lim_View
- or else
- (Ekind (Prev) = E_Incomplete_Type
- and then Full_View (Prev) = Non_Lim_View)
- or else
- (Ekind (Prev) = E_Incomplete_Type
- and then From_Limited_With (Prev)
- and then
- Ekind (Non_Limited_View (Prev)) = E_Incomplete_Type
- and then
- Full_View (Non_Limited_View (Prev)) = Non_Lim_View)
- then
- Set_Current_Entity (Lim_Typ);
+ Prev := Current_Entity (Lim_Typ);
- else
- while Present (Homonym (Prev))
- and then Homonym (Prev) /= Non_Lim_View
- loop
- Prev := Homonym (Prev);
- end loop;
+ while Present (Prev) loop
+ -- This is a regular replacement
- Set_Homonym (Prev, Lim_Typ);
- end if;
+ if Prev = Typ
+ or else (Ekind (Prev) = E_Incomplete_Type
+ and then Full_View (Prev) = Typ)
+ then
+ Replace (Prev, Lim_Typ);
- Set_Homonym (Lim_Typ, Homonym (Non_Lim_View));
- end;
+ if Debug_Flag_I then
+ Write_Str (" (homonym) replace ");
+ Write_Name (Chars (Typ));
+ Write_Eol;
+ end if;
- if Debug_Flag_I then
- Write_Str (" (homonym) chain ");
- Write_Name (Chars (Lim_Typ));
- Write_Eol;
- end if;
+ exit;
+
+ -- This is where E1 is replaced with E4
+
+ elsif Ekind (Prev) = E_Incomplete_Type
+ and then From_Limited_With (Prev)
+ and then
+ Ekind (Non_Limited_View (Prev)) = E_Incomplete_Type
+ and then Full_View (Non_Limited_View (Prev)) = Typ
+ then
+ Replace (Prev, Lim_Typ);
+
+ if Debug_Flag_I then
+ Write_Str (" (homonym) E1 -> E4 ");
+ Write_Name (Chars (Typ));
+ Write_Eol;
+ end if;
+
+ exit;
+ end if;
+
+ Prev := Homonym (Prev);
+ end loop;
+ end;
end if;
Next_Entity (Lim_Typ);
@@ -5474,6 +5483,10 @@ package body Sem_Ch10 is
if Debug_Flag_I then
if Private_Present (With_Clause) then
Write_Str ("install private withed unit ");
+ elsif Parent_With (With_Clause) then
+ Write_Str ("install parent withed unit ");
+ elsif Implicit_With (With_Clause) then
+ Write_Str ("install implicit withed unit ");
else
Write_Str ("install withed unit ");
end if;
@@ -6816,9 +6829,10 @@ package body Sem_Ch10 is
------------------------------
procedure Restore_Chain_For_Shadow (Shadow : Entity_Id) is
- Is_E3 : Boolean;
+ Typ : constant Entity_Id := Non_Limited_View (Shadow);
+ pragma Assert (not In_Chain (Typ));
+
Prev : Entity_Id;
- Typ : Entity_Id;
begin
-- If the package has incomplete types, the limited view of the
@@ -6827,9 +6841,8 @@ package body Sem_Ch10 is
-- the incomplete type at stake. This in turn has a full view
-- E3 that is the full declaration, with a corresponding
-- shadow entity E4. When reinstalling the nonlimited view,
- -- the nonvisible entity E1 is first replaced with E2, but then
- -- E3 must *not* become the visible entity as it is replacing E4
- -- in the homonyms list and simply be ignored.
+ -- the visible entity E4 is replaced directly with E2 in the
+ -- the homonyms list and E3 is simply ignored.
--
-- regular views limited views
--
@@ -6842,40 +6855,42 @@ package body Sem_Ch10 is
--
-- [*] denotes the visible entity (Current_Entity)
- Typ := Non_Limited_View (Shadow);
- pragma Assert (not In_Chain (Typ));
+ Prev := Current_Entity (Shadow);
- Is_E3 := Nkind (Parent (Typ)) = N_Full_Type_Declaration
- and then Present (Incomplete_View (Parent (Typ)));
+ while Present (Prev) loop
+ -- This is a regular replacement
- Prev := Current_Entity (Shadow);
+ if Prev = Shadow then
+ Replace (Prev, Typ);
- if Prev = Shadow then
- if Is_E3 then
- Set_Name_Entity_Id (Chars (Prev), Homonym (Prev));
- return;
+ if Debug_Flag_I then
+ Write_Str (" (homonym) replace ");
+ Write_Name (Chars (Typ));
+ Write_Eol;
+ end if;
- else
- Set_Current_Entity (Typ);
- end if;
+ exit;
- else
- while Present (Homonym (Prev))
- and then Homonym (Prev) /= Shadow
- loop
- Prev := Homonym (Prev);
- end loop;
+ -- This is where E4 is replaced with E2
- if Is_E3 then
- Set_Homonym (Prev, Homonym (Shadow));
- return;
+ elsif Ekind (Prev) = E_Incomplete_Type
+ and then From_Limited_With (Prev)
+ and then Ekind (Typ) = E_Incomplete_Type
+ and then Full_View (Typ) = Non_Limited_View (Prev)
+ then
+ Replace (Prev, Typ);
- else
- Set_Homonym (Prev, Typ);
+ if Debug_Flag_I then
+ Write_Str (" (homonym) E4 -> E2 ");
+ Write_Name (Chars (Typ));
+ Write_Eol;
+ end if;
+
+ exit;
end if;
- end if;
- Set_Homonym (Typ, Homonym (Shadow));
+ Prev := Homonym (Prev);
+ end loop;
end Restore_Chain_For_Shadow;
--------------------
@@ -7178,6 +7193,35 @@ package body Sem_Ch10 is
end sm;
-------------
+ -- Replace --
+ -------------
+
+ procedure Replace (Old_E, New_E : Entity_Id) is
+ Prev : Entity_Id;
+
+ begin
+ Prev := Current_Entity (Old_E);
+
+ if No (Prev) then
+ return;
+
+ elsif Prev = Old_E then
+ Set_Current_Entity (New_E);
+ Set_Homonym (New_E, Homonym (Old_E));
+
+ else
+ while Present (Prev) and then Homonym (Prev) /= Old_E loop
+ Prev := Homonym (Prev);
+ end loop;
+
+ if Present (Prev) then
+ Set_Homonym (Prev, New_E);
+ Set_Homonym (New_E, Homonym (Old_E));
+ end if;
+ end if;
+ end Replace;
+
+ -------------
-- Unchain --
-------------
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index e778bab..26ddb52 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -27792,15 +27792,6 @@ package body Sem_Util is
end if;
end Set_Rep_Info;
- ----------------------------
- -- Set_Scope_Is_Transient --
- ----------------------------
-
- procedure Set_Scope_Is_Transient (V : Boolean := True) is
- begin
- Scope_Stack.Table (Scope_Stack.Last).Is_Transient := V;
- end Set_Scope_Is_Transient;
-
-------------------
-- Set_Size_Info --
-------------------
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index 92016bc..dda71e4 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -3165,9 +3165,6 @@ package Sem_Util is
-- from sub(type) entity T2 to (sub)type entity T1, as well as Is_Volatile
-- if T1 is a base type.
- procedure Set_Scope_Is_Transient (V : Boolean := True);
- -- Set the flag Is_Transient of the current scope
-
procedure Set_Size_Info (T1, T2 : Entity_Id);
pragma Inline (Set_Size_Info);
-- Copies the Esize field and Has_Biased_Representation flag from sub(type)
diff --git a/gcc/ada/sinfo.ads b/gcc/ada/sinfo.ads
index 57fd704..fc9bcfb 100644
--- a/gcc/ada/sinfo.ads
+++ b/gcc/ada/sinfo.ads
@@ -82,12 +82,6 @@ package Sinfo is
-- for this purpose, so e.g. in X := (if A then B else C);
-- Paren_Count for the right side will be 1.
- -- Comes_From_Check_Or_Contract
- -- This flag is present in all N_If_Statement nodes and
- -- gets set when an N_If_Statement is generated as part of
- -- the expansion of a Check, Assert, or contract-related
- -- pragma.
-
-- Comes_From_Source
-- This flag is present in all nodes. It is set if the
-- node is built by the scanner or parser, and clear if
@@ -953,6 +947,12 @@ package Sinfo is
-- attribute definition clause is given, rather than testing this at the
-- freeze point.
+ -- Comes_From_Check_Or_Contract
+ -- This flag is present in all N_If_Statement nodes and
+ -- gets set when an N_If_Statement is generated as part of
+ -- the expansion of a Check, Assert, or contract-related
+ -- pragma.
+
-- Comes_From_Extended_Return_Statement
-- Present in N_Simple_Return_Statement nodes. True if this node was
-- constructed as part of the N_Extended_Return_Statement expansion.
@@ -2809,12 +2809,6 @@ package Sinfo is
-- fields are defined (and access subprograms declared) in package
-- Einfo.
- -- Note: N_Defining_Identifier is an extended node whose fields are
- -- deliberately laid out to match the layout of fields in an ordinary
- -- N_Identifier node allowing for easy alteration of an identifier
- -- node into a defining identifier node. For details, see procedure
- -- Sinfo.CN.Change_Identifier_To_Defining_Identifier.
-
-- N_Defining_Identifier
-- Sloc points to identifier
-- Chars contains the Name_Id for the identifier
@@ -3156,12 +3150,6 @@ package Sinfo is
-- additional fields are defined (and access subprograms declared)
-- in package Einfo.
- -- Note: N_Defining_Character_Literal is an extended node whose fields
- -- are deliberately laid out to match layout of fields in an ordinary
- -- N_Character_Literal node, allowing for easy alteration of a character
- -- literal node into a defining character literal node. For details, see
- -- Sinfo.CN.Change_Character_Literal_To_Defining_Character_Literal.
-
-- N_Defining_Character_Literal
-- Sloc points to literal
-- Chars contains the Name_Id for the identifier
@@ -5416,13 +5404,6 @@ package Sinfo is
-- additional fields are defined (and access subprograms declared)
-- in package Einfo.
- -- Note: N_Defining_Operator_Symbol is an extended node whose fields
- -- are deliberately laid out to match the layout of fields in an
- -- ordinary N_Operator_Symbol node allowing for easy alteration of
- -- an operator symbol node into a defining operator symbol node.
- -- See Sinfo.CN.Change_Operator_Symbol_To_Defining_Operator_Symbol
- -- for further details.
-
-- N_Defining_Operator_Symbol
-- Sloc points to literal
-- Chars contains the Name_Id for the operator symbol
diff --git a/gcc/ada/types.ads b/gcc/ada/types.ads
index c10f404..b7612bf 100644
--- a/gcc/ada/types.ads
+++ b/gcc/ada/types.ads
@@ -405,9 +405,7 @@ package Types is
subtype Entity_Id is Node_Id;
-- A synonym for node types, used in the Einfo package to refer to nodes
- -- that are entities (i.e. nodes with an Nkind of N_Defining_xxx). All such
- -- nodes are extended nodes and these are the only extended nodes, so that
- -- in practice entity and extended nodes are synonymous.
+ -- that are entities (i.e. nodes with an Nkind of N_Defining_xxx).
--
-- Note that Sinfo.Nodes.N_Entity_Id is the same as Entity_Id, except it
-- has a predicate requiring the correct Nkind. Opt_N_Entity_Id is the same