[multiple changes]

2011-11-07  Olivier Hainque  <hainque@adacore.com>

	* sigtramp-ppcvxw.c: Add general comments.
	(CFI_COMMON_REGS): Remove rule for r1, as in other unwinders. Add
	rules for r2 to r13, plus CTR and XER.
	(CFA_REG): New, register number used to hold the local CFA.
	(CFI_DEF_CFA, SIGTRAMP_BODY): Use it.
	Make that 15, not 14, with documentation.
	(TCR): Undef before definition, preventing conflict with reg number in
	VxWorks headers.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* exp_util.ads, exp_alfa.adb, a-cohama.adb, a-cohama.ads, sem_ch4.adb,
	aspects.ads, exp_ch8.adb, exp_ch8.ads, atree.ads: Minor reformatting.
	* gcc-interface/Make-lang.in: Update dependencies. 

2011-11-07  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch6.adb: A tagged type is a legal actual for an aliased
	formal.

2011-11-07  Pascal Obry  <obry@adacore.com>

	* g-socket.adb, g-socket.ads: Minor reformatting.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* sem_res.adb (Resolve_Actuals): Minor error message improvement.

2011-11-07  Robert Dewar  <dewar@adacore.com>

	* gnat_ugn.texi: Add discussion of default mode handling of
	source representation with no -gnatW option given, in particular
	noting that NEL (next line) is not recognized in this context.

From-SVN: r181094
This commit is contained in:
Arnaud Charlet 2011-11-07 17:30:55 +01:00
parent 9ee76313c4
commit b5bf33351a
17 changed files with 205 additions and 120 deletions

View File

@ -1,3 +1,39 @@
2011-11-07 Olivier Hainque <hainque@adacore.com>
* sigtramp-ppcvxw.c: Add general comments.
(CFI_COMMON_REGS): Remove rule for r1, as in other unwinders. Add
rules for r2 to r13, plus CTR and XER.
(CFA_REG): New, register number used to hold the local CFA.
(CFI_DEF_CFA, SIGTRAMP_BODY): Use it.
Make that 15, not 14, with documentation.
(TCR): Undef before definition, preventing conflict with reg number in
VxWorks headers.
2011-11-07 Robert Dewar <dewar@adacore.com>
* exp_util.ads, exp_alfa.adb, a-cohama.adb, a-cohama.ads, sem_ch4.adb,
aspects.ads, exp_ch8.adb, exp_ch8.ads, atree.ads: Minor reformatting.
* gcc-interface/Make-lang.in: Update dependencies.
2011-11-07 Ed Schonberg <schonberg@adacore.com>
* exp_ch6.adb: A tagged type is a legal actual for an aliased
formal.
2011-11-07 Pascal Obry <obry@adacore.com>
* g-socket.adb, g-socket.ads: Minor reformatting.
2011-11-07 Robert Dewar <dewar@adacore.com>
* sem_res.adb (Resolve_Actuals): Minor error message improvement.
2011-11-07 Robert Dewar <dewar@adacore.com>
* gnat_ugn.texi: Add discussion of default mode handling of
source representation with no -gnatW option given, in particular
noting that NEL (next line) is not recognized in this context.
2011-11-07 Yannick Moy <moy@adacore.com> 2011-11-07 Yannick Moy <moy@adacore.com>
* sem_util.adb (Note_Possible_Modification): In Alfa mode, * sem_util.adb (Note_Possible_Modification): In Alfa mode,

View File

@ -846,8 +846,8 @@ package body Ada.Containers.Hashed_Maps is
--------------- ---------------
function Constant_Reference function Constant_Reference
(Container : aliased Map; Position : Cursor) (Container : aliased Map;
return Constant_Reference_Type Position : Cursor) return Constant_Reference_Type
is is
pragma Unreferenced (Container); pragma Unreferenced (Container);
begin begin
@ -855,8 +855,8 @@ package body Ada.Containers.Hashed_Maps is
end Constant_Reference; end Constant_Reference;
function Reference function Reference
(Container : aliased in out Map; Position : Cursor) (Container : aliased in out Map;
return Reference_Type Position : Cursor) return Reference_Type
is is
pragma Unreferenced (Container); pragma Unreferenced (Container);
begin begin
@ -864,16 +864,16 @@ package body Ada.Containers.Hashed_Maps is
end Reference; end Reference;
function Constant_Reference function Constant_Reference
(Container : aliased Map; Key : Key_Type) (Container : aliased Map;
return Constant_Reference_Type Key : Key_Type) return Constant_Reference_Type
is is
begin begin
return (Element => Container.Element (Key)'Unrestricted_Access); return (Element => Container.Element (Key)'Unrestricted_Access);
end Constant_Reference; end Constant_Reference;
function Reference function Reference
(Container : aliased in out Map; Key : Key_Type) (Container : aliased in out Map;
return Reference_Type Key : Key_Type) return Reference_Type
is is
begin begin
return (Element => Container.Element (Key)'Unrestricted_Access); return (Element => Container.Element (Key)'Unrestricted_Access);

View File

@ -311,28 +311,28 @@ package Ada.Containers.Hashed_Maps is
for Reference_Type'Read use Read; for Reference_Type'Read use Read;
function Constant_Reference function Constant_Reference
(Container : aliased Map; Position : Cursor) (Container : aliased Map;
return Constant_Reference_Type; Position : Cursor) return Constant_Reference_Type;
function Reference function Reference
(Container : aliased in out Map; Position : Cursor) (Container : aliased in out Map;
return Reference_Type; Position : Cursor) return Reference_Type;
function Constant_Reference function Constant_Reference
(Container : aliased Map; Key : Key_Type) (Container : aliased Map;
return Constant_Reference_Type; Key : Key_Type) return Constant_Reference_Type;
function Reference function Reference
(Container : aliased in out Map; Key : Key_Type) (Container : aliased in out Map;
return Reference_Type; Key : Key_Type) return Reference_Type;
procedure Iterate procedure Iterate
(Container : Map; (Container : Map;
Process : not null access procedure (Position : Cursor)); Process : not null access procedure (Position : Cursor));
-- Calls Process for each node in the map -- Calls Process for each node in the map
function Iterate (Container : Map) function Iterate
return Map_Iterator_Interfaces.Forward_Iterator'class; (Container : Map) return Map_Iterator_Interfaces.Forward_Iterator'class;
private private
pragma Inline ("="); pragma Inline ("=");

View File

@ -180,13 +180,13 @@ package Aspects is
-- to the class-wide type as well. -- to the class-wide type as well.
Inherited_Aspect : constant array (Aspect_Id) of Boolean := Inherited_Aspect : constant array (Aspect_Id) of Boolean :=
(Aspect_Constant_Indexing => True, (Aspect_Constant_Indexing => True,
Aspect_Default_Iterator => True, Aspect_Default_Iterator => True,
Aspect_Implicit_Dereference => True, Aspect_Implicit_Dereference => True,
Aspect_Iterator_Element => True, Aspect_Iterator_Element => True,
Aspect_Remote_Types => True, Aspect_Remote_Types => True,
Aspect_Variable_Indexing => True, Aspect_Variable_Indexing => True,
others => False); others => False);
-- The following subtype defines aspects corresponding to library unit -- The following subtype defines aspects corresponding to library unit
-- pragmas, these can only validly appear as aspects for library units, -- pragmas, these can only validly appear as aspects for library units,

View File

@ -151,16 +151,16 @@ package Atree is
-- it is useful to be able to do untyped traversals, and an internal -- it is useful to be able to do untyped traversals, and an internal
-- package in Atree allows for direct untyped accesses in such cases. -- package in Atree allows for direct untyped accesses in such cases.
-- Flag4 Sixteen Boolean flags (use depends on Nkind and -- Flag4 Fifteen Boolean flags (use depends on Nkind and
-- Flag5 Ekind, as described for FieldN). Again the access -- Flag5 Ekind, as described for FieldN). Again the access
-- Flag6 is usually via subprograms in Sinfo and Einfo which -- Flag6 is usually via subprograms in Sinfo and Einfo which
-- Flag7 provide high-level synonyms for these flags, and -- Flag7 provide high-level synonyms for these flags, and
-- Flag8 contain debugging code that checks that the values -- Flag8 contain debugging code that checks that the values
-- Flag9 in Nkind and Ekind are appropriate for the access. -- Flag9 in Nkind and Ekind are appropriate for the access.
-- Flag10 -- Flag10
-- Flag11 Note that Flag1-2 are missing from this list. For -- Flag11 Note that Flag1-3 are missing from this list. For
-- Flag12 historical reasons, these flag names are unused. -- Flag12 historical reasons, these flag names are unused.
-- Flag13 What about Flag3??? -- Flag13
-- Flag14 -- Flag14
-- Flag15 -- Flag15
-- Flag16 -- Flag16

View File

@ -297,13 +297,10 @@ package body Exp_Alfa is
T : constant Entity_Id := Etype (N); T : constant Entity_Id := Etype (N);
begin begin
-- Substitute a reference to a renaming with the actual renamed object -- Replace a reference to a renaming with the actual renamed object
if Ekind (E) in Object_Kind if Ekind (E) in Object_Kind and then Present (Renamed_Object (E)) then
and then Present (Renamed_Object (E))
then
Rewrite (N, New_Copy_Tree (Renamed_Object (E))); Rewrite (N, New_Copy_Tree (Renamed_Object (E)));
Reset_Analyzed_Flags (N); Reset_Analyzed_Flags (N);
Analyze_And_Resolve (N, T); Analyze_And_Resolve (N, T);
end if; end if;

View File

@ -2652,10 +2652,13 @@ package body Exp_Ch6 is
end if; end if;
end if; end if;
-- For Ada 2012, if a parameter is aliased, the actual must be an -- For Ada 2012, if a parameter is aliased, the actual must be a
-- aliased object. -- tagged type or an aliased view of an object.
if Is_Aliased (Formal) and then not Is_Aliased_View (Actual) then if Is_Aliased (Formal)
and then not Is_Aliased_View (Actual)
and then not Is_Tagged_Type (Etype (Formal))
then
Error_Msg_NE Error_Msg_NE
("actual for aliased formal& must be aliased object", ("actual for aliased formal& must be aliased object",
Actual, Formal); Actual, Formal);

View File

@ -50,7 +50,6 @@ package body Exp_Ch8 is
procedure Expand_N_Exception_Renaming_Declaration (N : Node_Id) is procedure Expand_N_Exception_Renaming_Declaration (N : Node_Id) is
Decl : constant Node_Id := Debug_Renaming_Declaration (N); Decl : constant Node_Id := Debug_Renaming_Declaration (N);
begin begin
if Present (Decl) then if Present (Decl) then
Insert_Action (N, Decl); Insert_Action (N, Decl);

View File

@ -32,5 +32,4 @@ package Exp_Ch8 is
procedure Expand_N_Object_Renaming_Declaration (N : Node_Id); procedure Expand_N_Object_Renaming_Declaration (N : Node_Id);
procedure Expand_N_Package_Renaming_Declaration (N : Node_Id); procedure Expand_N_Package_Renaming_Declaration (N : Node_Id);
procedure Expand_N_Subprogram_Renaming_Declaration (N : Node_Id); procedure Expand_N_Subprogram_Renaming_Declaration (N : Node_Id);
end Exp_Ch8; end Exp_Ch8;

View File

@ -353,7 +353,8 @@ package Exp_Util is
procedure Evaluate_Name (Nam : Node_Id); procedure Evaluate_Name (Nam : Node_Id);
-- Remove the all side effects from a name which appears as part of an -- Remove the all side effects from a name which appears as part of an
-- object renaming declaration. -- object renaming declaration. More comments are needed here that explain
-- how this differs from Force_Evaluation and Remove_Side_Effects ???
procedure Evolve_And_Then (Cond : in out Node_Id; Cond1 : Node_Id); procedure Evolve_And_Then (Cond : in out Node_Id; Cond1 : Node_Id);
-- Rewrites Cond with the expression: Cond and then Cond1. If Cond is -- Rewrites Cond with the expression: Cond and then Cond1. If Cond is

View File

@ -36,8 +36,8 @@ with Ada.Unchecked_Conversion;
with Interfaces.C.Strings; with Interfaces.C.Strings;
with GNAT.Sockets.Thin_Common; use GNAT.Sockets.Thin_Common; with GNAT.Sockets.Thin_Common; use GNAT.Sockets.Thin_Common;
with GNAT.Sockets.Thin; use GNAT.Sockets.Thin; with GNAT.Sockets.Thin; use GNAT.Sockets.Thin;
with GNAT.Sockets.Linker_Options; with GNAT.Sockets.Linker_Options;
pragma Warnings (Off, GNAT.Sockets.Linker_Options); pragma Warnings (Off, GNAT.Sockets.Linker_Options);
@ -246,11 +246,11 @@ package body GNAT.Sockets is
-- Type and Stream_Socket_Stream_Type. -- Type and Stream_Socket_Stream_Type.
procedure Wait_On_Socket procedure Wait_On_Socket
(Socket : Socket_Type; (Socket : Socket_Type;
For_Read : Boolean; For_Read : Boolean;
Timeout : Selector_Duration; Timeout : Selector_Duration;
Selector : access Selector_Type := null; Selector : access Selector_Type := null;
Status : out Selector_Status); Status : out Selector_Status);
-- Common code for variants of socket operations supporting a timeout: -- Common code for variants of socket operations supporting a timeout:
-- block in Check_Selector on Socket for at most the indicated timeout. -- block in Check_Selector on Socket for at most the indicated timeout.
-- If For_Read is True, Socket is added to the read set for this call, else -- If For_Read is True, Socket is added to the read set for this call, else
@ -490,8 +490,8 @@ package body GNAT.Sockets is
-- that Fd is within range (otherwise behaviour is undefined). -- that Fd is within range (otherwise behaviour is undefined).
elsif Fd < 0 or else Fd >= SOSC.FD_SETSIZE then elsif Fd < 0 or else Fd >= SOSC.FD_SETSIZE then
raise Constraint_Error with "invalid value for socket set: " raise Constraint_Error
& Image (Fd); with "invalid value for socket set: " & Image (Fd);
end if; end if;
end Check_For_Fd_Set; end Check_For_Fd_Set;
@ -731,11 +731,11 @@ package body GNAT.Sockets is
-- Wait for socket to become available for writing -- Wait for socket to become available for writing
Wait_On_Socket Wait_On_Socket
(Socket => Socket, (Socket => Socket,
For_Read => False, For_Read => False,
Timeout => Timeout, Timeout => Timeout,
Selector => Selector, Selector => Selector,
Status => Status); Status => Status);
-- Reset the socket to blocking I/O -- Reset the socket to blocking I/O
@ -1580,11 +1580,11 @@ package body GNAT.Sockets is
-------------------- --------------------
procedure Wait_On_Socket procedure Wait_On_Socket
(Socket : Socket_Type; (Socket : Socket_Type;
For_Read : Boolean; For_Read : Boolean;
Timeout : Selector_Duration; Timeout : Selector_Duration;
Selector : access Selector_Type := null; Selector : access Selector_Type := null;
Status : out Selector_Status) Status : out Selector_Status)
is is
type Local_Selector_Access is access Selector_Type; type Local_Selector_Access is access Selector_Type;
for Local_Selector_Access'Storage_Size use Selector_Type'Size; for Local_Selector_Access'Storage_Size use Selector_Type'Size;

View File

@ -432,8 +432,8 @@ package GNAT.Sockets is
Immediate : constant Duration := 0.0; Immediate : constant Duration := 0.0;
Forever : constant Duration := Forever : constant Duration :=
Duration'Min (Duration'Last, 1.0 * SOSC.MAX_tv_sec); Duration'Min (Duration'Last, 1.0 * SOSC.MAX_tv_sec);
-- Largest possible Duration that is also a valid value for struct timeval -- Largest possible Duration that is also a valid value for struct timeval
subtype Timeval_Duration is Duration range Immediate .. Forever; subtype Timeval_Duration is Duration range Immediate .. Forever;
@ -1146,7 +1146,6 @@ private
R_Sig_Socket : Socket_Type := No_Socket; R_Sig_Socket : Socket_Type := No_Socket;
W_Sig_Socket : Socket_Type := No_Socket; W_Sig_Socket : Socket_Type := No_Socket;
-- Signalling sockets used to abort a select operation -- Signalling sockets used to abort a select operation
end case; end case;
end record; end record;
@ -1234,10 +1233,10 @@ private
end record; end record;
type Service_Entry_Type (Aliases_Length : Natural) is record type Service_Entry_Type (Aliases_Length : Natural) is record
Official : Name_Type; Official : Name_Type;
Aliases : Name_Array (1 .. Aliases_Length); Aliases : Name_Array (1 .. Aliases_Length);
Port : Port_Type; Port : Port_Type;
Protocol : Name_Type; Protocol : Name_Type;
end record; end record;
type Request_Flag_Type is mod 2 ** 8; type Request_Flag_Type is mod 2 ** 8;

View File

@ -1773,7 +1773,7 @@ ada/exp_alfa.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \ ada/atree.adb ada/casing.ads ada/debug.ads ada/einfo.ads ada/einfo.adb \
ada/exp_alfa.ads ada/exp_alfa.adb ada/exp_attr.ads ada/exp_ch4.ads \ ada/exp_alfa.ads ada/exp_alfa.adb ada/exp_attr.ads ada/exp_ch4.ads \
ada/exp_ch6.ads ada/exp_ch8.ads ada/exp_dbug.ads ada/exp_tss.ads \ ada/exp_ch6.ads ada/exp_dbug.ads ada/exp_tss.ads ada/exp_util.ads \
ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/interfac.ads \ ada/gnat.ads ada/g-htable.ads ada/hostparm.ads ada/interfac.ads \
ada/namet.ads ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads \ ada/namet.ads ada/namet.adb ada/nlists.ads ada/nlists.adb ada/nmake.ads \
ada/opt.ads ada/output.ads ada/rtsfind.ads ada/sem_aux.ads \ ada/opt.ads ada/output.ads ada/rtsfind.ads ada/sem_aux.ads \
@ -4070,42 +4070,42 @@ ada/sem_ch3.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/validsw.ads ada/warnsw.ads ada/widechar.ads ada/validsw.ads ada/warnsw.ads ada/widechar.ads
ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/sem_ch4.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/aspects.adb \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \
ada/atree.ads ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads \ ada/atree.adb ada/casing.ads ada/checks.ads ada/csets.ads ada/debug.ads \
ada/debug.ads ada/debug_a.ads ada/einfo.ads ada/einfo.adb \ ada/debug_a.ads ada/einfo.ads ada/einfo.adb ada/elists.ads \
ada/elists.ads ada/elists.adb ada/err_vars.ads ada/errout.ads \ ada/elists.adb ada/err_vars.ads ada/errout.ads ada/errout.adb \
ada/errout.adb ada/erroutc.ads ada/erroutc.adb ada/eval_fat.ads \ ada/erroutc.ads ada/erroutc.adb ada/eval_fat.ads ada/exp_ch11.ads \
ada/exp_ch11.ads ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_code.ads \ ada/exp_ch6.ads ada/exp_ch7.ads ada/exp_code.ads ada/exp_disp.ads \
ada/exp_disp.ads ada/exp_tss.ads ada/exp_util.ads ada/expander.ads \ ada/exp_tss.ads ada/exp_util.ads ada/expander.ads ada/fname.ads \
ada/fname.ads ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads \ ada/fname-uf.ads ada/freeze.ads ada/get_targ.ads ada/gnat.ads \
ada/gnat.ads ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads \ ada/g-hesorg.ads ada/g-htable.ads ada/gnatvsn.ads ada/hlo.ads \
ada/hlo.ads ada/hostparm.ads ada/inline.ads ada/interfac.ads \ ada/hostparm.ads ada/inline.ads ada/interfac.ads ada/itypes.ads \
ada/itypes.ads ada/lib.ads ada/lib.adb ada/lib-list.adb \ ada/lib.ads ada/lib.adb ada/lib-list.adb ada/lib-load.ads \
ada/lib-load.ads ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads \ ada/lib-sort.adb ada/lib-util.ads ada/lib-xref.ads ada/namet.ads \
ada/namet.ads ada/namet.adb ada/namet-sp.ads ada/nlists.ads \ ada/namet.adb ada/namet-sp.ads ada/nlists.ads ada/nlists.adb \
ada/nlists.adb ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads \ ada/nmake.ads ada/nmake.adb ada/opt.ads ada/output.ads ada/par_sco.ads \
ada/par_sco.ads ada/put_alfa.ads ada/restrict.ads ada/restrict.adb \ ada/put_alfa.ads ada/restrict.ads ada/restrict.adb ada/rident.ads \
ada/rident.ads ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb \ ada/rtsfind.ads ada/scans.ads ada/sem.ads ada/sem.adb ada/sem_aggr.ads \
ada/sem_aggr.ads ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb \ ada/sem_attr.ads ada/sem_aux.ads ada/sem_aux.adb ada/sem_case.ads \
ada/sem_case.ads ada/sem_case.adb ada/sem_cat.ads ada/sem_ch10.ads \ ada/sem_case.adb ada/sem_cat.ads ada/sem_ch10.ads ada/sem_ch11.ads \
ada/sem_ch11.ads ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads \ ada/sem_ch12.ads ada/sem_ch13.ads ada/sem_ch2.ads ada/sem_ch3.ads \
ada/sem_ch3.ads ada/sem_ch4.ads ada/sem_ch4.adb ada/sem_ch5.ads \ ada/sem_ch4.ads ada/sem_ch4.adb ada/sem_ch5.ads ada/sem_ch6.ads \
ada/sem_ch6.ads ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads \ ada/sem_ch7.ads ada/sem_ch8.ads ada/sem_ch9.ads ada/sem_disp.ads \
ada/sem_disp.ads ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads \ ada/sem_dist.ads ada/sem_elab.ads ada/sem_elim.ads ada/sem_eval.ads \
ada/sem_eval.ads ada/sem_eval.adb ada/sem_intr.ads ada/sem_prag.ads \ ada/sem_eval.adb ada/sem_intr.ads ada/sem_prag.ads ada/sem_res.ads \
ada/sem_res.ads ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads \ ada/sem_res.adb ada/sem_type.ads ada/sem_util.ads ada/sem_util.adb \
ada/sem_util.adb ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads \ ada/sem_warn.ads ada/sem_warn.adb ada/sinfo.ads ada/sinfo.adb \
ada/sinfo.adb ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads \ ada/sinfo-cn.ads ada/sinput.ads ada/snames.ads ada/stand.ads \
ada/stand.ads ada/stringt.ads ada/stringt.adb ada/style.ads \ ada/stringt.ads ada/stringt.adb ada/style.ads ada/styleg.ads \
ada/styleg.ads ada/styleg.adb ada/stylesw.ads ada/system.ads \ ada/styleg.adb ada/stylesw.ads ada/system.ads ada/s-exctab.ads \
ada/s-exctab.ads ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads \ ada/s-htable.ads ada/s-imenne.ads ada/s-memory.ads ada/s-os_lib.ads \
ada/s-os_lib.ads ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads \ ada/s-parame.ads ada/s-rident.ads ada/s-secsta.ads ada/s-soflin.ads \
ada/s-soflin.ads ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads \ ada/s-stache.ads ada/s-stalib.ads ada/s-stoele.ads ada/s-stoele.adb \
ada/s-stoele.adb ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads \ ada/s-string.ads ada/s-traent.ads ada/s-unstyp.ads ada/s-wchcon.ads \
ada/s-wchcon.ads ada/table.ads ada/table.adb ada/targparm.ads \ ada/table.ads ada/table.adb ada/targparm.ads ada/tbuild.ads \
ada/tbuild.ads ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads \ ada/tbuild.adb ada/tree_io.ads ada/ttypes.ads ada/types.ads \
ada/types.ads ada/uintp.ads ada/uintp.adb ada/uname.ads \ ada/uintp.ads ada/uintp.adb ada/uname.ads ada/unchconv.ads \
ada/unchconv.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads ada/unchdeal.ads ada/urealp.ads ada/widechar.ads
ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \ ada/sem_ch5.o : ada/ada.ads ada/a-except.ads ada/a-unccon.ads \
ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \ ada/a-uncdea.ads ada/alloc.ads ada/aspects.ads ada/atree.ads \

View File

@ -7155,7 +7155,10 @@ used, it must be used consistently throughout the program. However,
since brackets encoding is always recognized, it may be conveniently since brackets encoding is always recognized, it may be conveniently
used in standard libraries, allowing these libraries to be used with used in standard libraries, allowing these libraries to be used with
any of the available coding schemes. any of the available coding schemes.
scheme.
Note that brackets encoding only applies to program text. Within comments,
brackets are considered to be normal graphic characters, and bracket sequences
are never recognized as wide characters.
If no @option{-gnatW?} parameter is present, then the default If no @option{-gnatW?} parameter is present, then the default
representation is normally Brackets encoding only. However, if the representation is normally Brackets encoding only. However, if the
@ -7169,6 +7172,27 @@ for Wide_Text_IO files if not specifically overridden by a WCEM form
parameter. parameter.
@end table @end table
When no @option{-gnatW?} is specified, then characters (other than wide
characters represented using brackets notation) are treated as 8-bit
Latin-1 codes. The codes recognized are the Latin-1 graphic characters,
and ASCII format effectors (CR, LF, HT, VT). Other lower half control
characters in the range 16#00#..16#1F# are not accepted in program text
or in comments. Upper half control characters (16#80#..16#9F#) are rejected
in program text, but allowed and ignored in comments. Note in particular
that the Next Line (NEL) character whose encoding is 16#85# is not recognized
as an end of line in this default mode. If your source program contains
instances of the NEL character used as a line terminator,
you must use UTF-8 encoding for the whole
source program. In default mode, all lines must be ended by a standard
end of line sequence (CR, CR/LF, or LF).
Note that the convention of simply accepting all upper half characters in
comments means that programs that use standard ASCII for program text, but
UTF-8 encoding for comments are accepted in default mode, providing that the
comments are ended by an appropriate (CR, or CR/LF, or LF) line terminator.
This is a common mode for many programs with foreign language comments.
@node File Naming Control @node File Naming Control
@subsection File Naming Control @subsection File Naming Control

View File

@ -6507,7 +6507,6 @@ package body Sem_Ch4 is
-- Add implicit dereference interpretation -- Add implicit dereference interpretation
Disc := First_Discriminant (Etype (It.Nam)); Disc := First_Discriminant (Etype (It.Nam));
while Present (Disc) loop while Present (Disc) loop
if Has_Implicit_Dereference (Disc) then if Has_Implicit_Dereference (Disc) then
Add_One_Interp Add_One_Interp
@ -6517,6 +6516,7 @@ package body Sem_Ch4 is
Next_Discriminant (Disc); Next_Discriminant (Disc);
end loop; end loop;
exit; exit;
end if; end if;
Get_Next_Interp (I, It); Get_Next_Interp (I, It);

View File

@ -3926,16 +3926,16 @@ package body Sem_Res is
if Is_Atomic_Object (A) if Is_Atomic_Object (A)
and then not Is_Atomic (Etype (F)) and then not Is_Atomic (Etype (F))
then then
Error_Msg_N Error_Msg_NE
("cannot pass atomic argument to non-atomic formal", ("cannot pass atomic argument to non-atomic formal&",
N); A, F);
elsif Is_Volatile_Object (A) elsif Is_Volatile_Object (A)
and then not Is_Volatile (Etype (F)) and then not Is_Volatile (Etype (F))
then then
Error_Msg_N Error_Msg_NE
("cannot pass volatile argument to non-volatile formal", ("cannot pass volatile argument to non-volatile formal&",
N); A, F);
end if; end if;
end if; end if;

View File

@ -55,7 +55,11 @@
Checking which variant should apply and getting at sc_pregs is simpler Checking which variant should apply and getting at sc_pregs is simpler
to express in C (we can't use offsetof in toplevel asms and hardcoding to express in C (we can't use offsetof in toplevel asms and hardcoding
constants is not workable with the flurry of VxWorks variants), so this constants is not workable with the flurry of VxWorks variants), so this
is the choice for our toplevel interface. */ is the choice for our toplevel interface.
Note that the registers we "restore" here are those to which we have
direct access through the system sigcontext structure, which includes
only a partial set of the non-volatiles ABI-wise. */
/* ----------------------------------------- /* -----------------------------------------
-- Protypes for our internal asm stubs -- -- Protypes for our internal asm stubs --
@ -120,8 +124,9 @@ void __gnat_sigtramp (int signo, void *si, void *sc,
/* REGNO constants, dwarf column numbers for registers of interest. */ /* REGNO constants, dwarf column numbers for registers of interest. */
#define REGNO_LR 65 #define REGNO_LR 65
#define REGNO_XER 76 #define REGNO_CTR 66
#define REGNO_CR 70 #define REGNO_CR 70
#define REGNO_XER 76
#define REGNO_GR(N) (N) #define REGNO_GR(N) (N)
#define REGNO_PC 67 /* ARG_POINTER_REGNUM */ #define REGNO_PC 67 /* ARG_POINTER_REGNUM */
@ -139,6 +144,8 @@ void __gnat_sigtramp (int signo, void *si, void *sc,
multine contents: */ multine contents: */
#define TAB(S) "\t" S #define TAB(S) "\t" S
#define CR(S) S "\n" #define CR(S) S "\n"
#undef TCR
#define TCR(S) TAB(CR(S)) #define TCR(S) TAB(CR(S))
/*------------------------------ /*------------------------------
@ -147,11 +154,18 @@ void __gnat_sigtramp (int signo, void *si, void *sc,
/* CFA setup block /* CFA setup block
--------------- ---------------
Only non-volatile registers are suitable for a CFA base. We use r14 Only non-volatile registers are suitable for a CFA base. These are the
here and set it to the value we need in stub body that follows. */ only ones we can expect to be able retrieve from the unwinding context
while walking up the chain, saved by at least the bottom-most exception
propagation services. We use r15 here and set it to the value we need
in stub body that follows. Note that r14 is inappropriate here, even
though it is non-volatile according to the ABI, because GCC uses it as
an extra SCRATCH on SPE targets. */
#define CFA_REG 15
#define CFI_DEF_CFA \ #define CFI_DEF_CFA \
CR(".cfi_def_cfa 14, 0") CR(".cfi_def_cfa " S(CFA_REG) ", 0")
/* Register location blocks /* Register location blocks
------------------------ ------------------------
@ -164,7 +178,18 @@ CR(".cfi_def_cfa 14, 0")
#define CFI_COMMON_REGS \ #define CFI_COMMON_REGS \
CR("# CFI for common registers\n") \ CR("# CFI for common registers\n") \
TCR(COMMON_CFI(GR(1))) \ TCR(COMMON_CFI(GR(2))) \
TCR(COMMON_CFI(GR(3))) \
TCR(COMMON_CFI(GR(4))) \
TCR(COMMON_CFI(GR(5))) \
TCR(COMMON_CFI(GR(6))) \
TCR(COMMON_CFI(GR(7))) \
TCR(COMMON_CFI(GR(8))) \
TCR(COMMON_CFI(GR(9))) \
TCR(COMMON_CFI(GR(10))) \
TCR(COMMON_CFI(GR(11))) \
TCR(COMMON_CFI(GR(12))) \
TCR(COMMON_CFI(GR(13))) \
TCR(COMMON_CFI(GR(14))) \ TCR(COMMON_CFI(GR(14))) \
TCR(COMMON_CFI(GR(15))) \ TCR(COMMON_CFI(GR(15))) \
TCR(COMMON_CFI(GR(16))) \ TCR(COMMON_CFI(GR(16))) \
@ -185,6 +210,8 @@ TCR(COMMON_CFI(GR(30))) \
TCR(COMMON_CFI(GR(31))) \ TCR(COMMON_CFI(GR(31))) \
TCR(COMMON_CFI(LR)) \ TCR(COMMON_CFI(LR)) \
TCR(COMMON_CFI(CR)) \ TCR(COMMON_CFI(CR)) \
TCR(COMMON_CFI(CTR)) \
TCR(COMMON_CFI(XER)) \
TCR(COMMON_CFI(PC)) \ TCR(COMMON_CFI(PC)) \
TCR(".cfi_return_column " S(REGNO_PC)) TCR(".cfi_return_column " S(REGNO_PC))
@ -198,10 +225,10 @@ TCR("# registers we're going to modify") \
TCR("stwu %r1,-16(%r1)") \ TCR("stwu %r1,-16(%r1)") \
TCR("mflr %r0") \ TCR("mflr %r0") \
TCR("stw %r0,20(%r1)") \ TCR("stw %r0,20(%r1)") \
TCR("stw %r14,8(%r1)") \ TCR("stw %r" S(CFA_REG) ",8(%r1)") \
TCR("") \ TCR("") \
TCR("# Setup r14 = sc_pregs, that we'll retrieve as our CFA value") \ TCR("# Setup CFA_REG = sc_pregs, that we'll retrieve as our CFA value") \
TCR("mr %r14, %r7") \ TCR("mr %r" S(CFA_REG) ", %r7") \
TCR("") \ TCR("") \
TCR("# Call the real handler. The signo, siginfo and sigcontext") \ TCR("# Call the real handler. The signo, siginfo and sigcontext") \
TCR("# arguments are the same as those we received in r3, r4 and r5") \ TCR("# arguments are the same as those we received in r3, r4 and r5") \
@ -209,7 +236,7 @@ TCR("mtctr %r6") \
TCR("bctrl") \ TCR("bctrl") \
TCR("") \ TCR("") \
TCR("# Restore our callee-saved items, release our frame and return") \ TCR("# Restore our callee-saved items, release our frame and return") \
TCR("lwz %r14,8(%r1)") \ TCR("lwz %r" S(CFA_REG) ",8(%r1)") \
TCR("lwz %r0,20(%r1)") \ TCR("lwz %r0,20(%r1)") \
TCR("mtlr %r0") \ TCR("mtlr %r0") \
TCR("") \ TCR("") \