[multiple changes]

2004-04-06  Pascal Obry  <obry@gnat.com>

	* adaint.c (DIR_SEPARATOR): Properly set DIR_SEPARATOR on Win32.

	* osint.adb (Program_Name): Do not look past a directory separator.

2004-04-06  Thomas Quinot  <quinot@act-europe.fr>

	* atree.adb: Update comment (Rewrite_Substitute_Node no longer exists).

	* exp_ch6.adb (Rewrite_Function_Call): Clarify documentation of
	requirement for preserving a copy of the original assignment node.

	* sinfo.ads: Update comment (Original_Tree -> Original_Node).

2004-04-06  Olivier Hainque  <hainque@act-europe.fr>

	(__gnat_initialize [Vxworks]): Enable references to the crtstuff bits
	when supported.

2004-04-06  Ed Schonberg  <schonberg@gnat.com>

	* sem_ch4.adb (Remove_Abstract_Operations): Extend previous changes to
	operator calls in functional notation, and apply
	Universal_Interpretation to operands, not to their type.

2004-04-06  Robert Dewar  <dewar@gnat.com>

	* 5wdirval.adb: Minor reformatting

2004-04-06  Ed Falis  <falis@gnat.com>

	* gnat_rm.texi: Improve a reference to the GCC manual

From-SVN: r80453
This commit is contained in:
Arnaud Charlet 2004-04-06 16:21:20 +02:00
parent 13ecc9e003
commit 3984e89a18
10 changed files with 119 additions and 33 deletions

View File

@ -52,6 +52,7 @@ package body Ada.Directories.Validity is
function Is_Valid_Path_Name (Name : String) return Boolean is
Start : Positive := Name'First;
Last : Natural;
begin
-- A path name cannot be empty, cannot contain more than 256 characters,
-- cannot contain invalid characters and each directory/file name need
@ -114,7 +115,8 @@ package body Ada.Directories.Validity is
--------------------------
function Is_Valid_Simple_Name (Name : String) return Boolean is
Only_Spaces : Boolean := True;
Only_Spaces : Boolean;
begin
-- A file name cannot be empty, cannot contain more than 256 characters,
-- and cannot contain invalid characters, including '\'
@ -122,20 +124,22 @@ package body Ada.Directories.Validity is
if Name'Length = 0 or else Name'Length > 256 then
return False;
-- Name length is OK
else
Only_Spaces := True;
for J in Name'Range loop
if Invalid_Character (Name (J)) or else Name (J) = '\' then
return False;
elsif Name (J) /= ' ' then
Only_Spaces := False;
end if;
end loop;
-- If no invalid chars, and not all spaces, file name is valid.
return not Only_Spaces;
end if;
-- If Name follows the rules, it is valid
return not Only_Spaces;
end Is_Valid_Simple_Name;
end Ada.Directories.Validity;

View File

@ -1,3 +1,37 @@
2004-04-06 Pascal Obry <obry@gnat.com>
* adaint.c (DIR_SEPARATOR): Properly set DIR_SEPARATOR on Win32.
* osint.adb (Program_Name): Do not look past a directory separator.
2004-04-06 Thomas Quinot <quinot@act-europe.fr>
* atree.adb: Update comment (Rewrite_Substitute_Node no longer exists).
* exp_ch6.adb (Rewrite_Function_Call): Clarify documentation of
requirement for preserving a copy of the original assignment node.
* sinfo.ads: Update comment (Original_Tree -> Original_Node).
2004-04-06 Olivier Hainque <hainque@act-europe.fr>
(__gnat_initialize [Vxworks]): Enable references to the crtstuff bits
when supported.
2004-04-06 Ed Schonberg <schonberg@gnat.com>
* sem_ch4.adb (Remove_Abstract_Operations): Extend previous changes to
operator calls in functional notation, and apply
Universal_Interpretation to operands, not to their type.
2004-04-06 Robert Dewar <dewar@gnat.com>
* 5wdirval.adb: Minor reformatting
2004-04-06 Ed Falis <falis@gnat.com>
* gnat_rm.texi: Improve a reference to the GCC manual
2004-04-05 Vincent Celier <celier@gnat.com>
* adaint.h, adaint.c: Add function __gnat_named_file_length

View File

@ -147,6 +147,8 @@ struct vstring
#if defined (_WIN32)
#include <dir.h>
#include <windows.h>
#undef DIR_SEPARATOR
#define DIR_SEPARATOR '\\'
#endif
#include "adaint.h"
@ -2525,4 +2527,3 @@ get_gcc_version (void)
{
return 3;
}

View File

@ -2114,8 +2114,7 @@ package body Atree is
-- Since we are doing a replace, we assume that the original node
-- is intended to become the new replaced node. The call would be
-- to Rewrite_Substitute_Node if there were an intention to save
-- the original node.
-- to Rewrite if there were an intention to save the original node.
Orig_Nodes.Table (Old_Node) := Old_Node;

View File

@ -2466,6 +2466,9 @@ package body Exp_Ch6 is
-- complete assignment subtree consistent enough for
-- Analyze_Assignment to proceed. We do not use the
-- saved value, the point was just to do the relocation.
-- We cannot rely on Original_Node to go back from the
-- block node to the assignment node, because the
-- assignment might already be a rewrite substitution.
begin
Rewrite (Original_Assignment, Blk);

View File

@ -62,7 +62,7 @@ GNAT Reference Manual
@noindent
GNAT, The GNU Ada 95 Compiler@*
Version for GCC @value{version-GCC}@*
GCC version @value{version-GCC}@*
@noindent
Ada Core Technologies, Inc.
@ -12688,15 +12688,17 @@ including machine instructions in a subprogram.
@end itemize
@noindent
The two features are similar, and both closely related to the mechanism
The two features are similar, and both are closely related to the mechanism
provided by the asm instruction in the GNU C compiler. Full understanding
and use of the facilities in this package requires understanding the asm
instruction as described in
@cite{Using and Porting the GNU Compiler Collection (GCC)} by Richard
Stallman. Calls to the function @code{Asm} and the procedure @code{Asm}
have identical semantic restrictions and effects as described below.
Both are provided so that the procedure call can be used as a statement,
and the function call can be used to form a code_statement.
instruction as described in @cite{Using the GNU Compiler Collection (GCC)}
by Richard Stallman. The relevant section is titled ``Extensions to the C
Language Family'' -> ``Assembler Instructions with C Expression Operands''.
Calls to the function @code{Asm} and the procedure @code{Asm} have identical
semantic restrictions and effects as described below. Both are provided so
that the procedure call can be used as a statement, and the function call
can be used to form a code_statement.
The first example given in the GCC documentation is the C @code{asm}
instruction:

View File

@ -1797,13 +1797,16 @@ __gnat_initialize (void)
call the appropriate function here. We'll never unload that, so there is
no de-registration to worry about.
We can differentiate between the two cases by looking at the
__module_has_ctors value provided by each class of crt objects. As of
today, selecting the crt set intended for applications to be statically
linked with the kernel is triggered by adding "-static" to the gcc *link*
command line options. */
We can differentiate by looking at the __module_has_ctors value provided
by each class of crt objects. As of today, selecting the crt set intended
for applications to be statically linked with the kernel is triggered by
adding "-static" to the gcc *link* command line options.
#if 0
This is a first approach, tightly synchronized with a number of GCC
configuration and crtstuff changes. We need to ensure that those changes
are there to activate this circuitry. */
#if DWARF2_UNWIND_INFO && defined (_ARCH_PPC)
{
extern const int __module_has_ctors;
extern void __do_global_ctors ();

View File

@ -1794,8 +1794,18 @@ package body Osint is
-- "alpha-dec-vxworks-"
while Name_Len > 0 loop
-- All done if we find the last hyphen
if Name_Buffer (Name_Len) = '-' then
exit;
-- If directory separator found, we don't want to look further
-- since in this case, no prefix has been found.
elsif Is_Directory_Separator (Name_Buffer (Name_Len)) then
Name_Len := 0;
exit;
end if;
Name_Len := Name_Len - 1;

View File

@ -4359,20 +4359,18 @@ package body Sem_Ch4 is
-- always added to the overload set, unless it is a universal
-- operation.
if Nkind (N) in N_Op
and then Has_Abstract_Op
then
if not Has_Abstract_Op then
return;
elsif Nkind (N) in N_Op then
if Nkind (N) in N_Unary_Op
and then
Present (Universal_Interpretation (Etype (Right_Opnd (N))))
and then Present (Universal_Interpretation (Right_Opnd (N)))
then
return;
elsif Nkind (N) in N_Binary_Op
and then
Present (Universal_Interpretation (Etype (Right_Opnd (N))))
and then
Present (Universal_Interpretation (Etype (Left_Opnd (N))))
and then Present (Universal_Interpretation (Right_Opnd (N)))
and then Present (Universal_Interpretation (Left_Opnd (N)))
then
return;
@ -4386,6 +4384,38 @@ package body Sem_Ch4 is
Get_Next_Interp (I, It);
end loop;
end if;
elsif Nkind (N) = N_Function_Call
and then
(Nkind (Name (N)) = N_Operator_Symbol
or else
(Nkind (Name (N)) = N_Expanded_Name
and then
Nkind (Selector_Name (Name (N))) = N_Operator_Symbol))
then
declare
Arg1 : constant Node_Id := First (Parameter_Associations (N));
begin
if Present (Universal_Interpretation (Arg1))
or else
(Present (Next (Arg1))
and then
Present (Universal_Interpretation (Next (Arg1))))
then
return;
else
Get_First_Interp (N, I, It);
while Present (It.Nam) loop
if Scope (It.Nam) = Standard_Standard then
Remove_Interp (I);
end if;
Get_Next_Interp (I, It);
end loop;
end if;
end;
end if;
end if;
end Remove_Abstract_Operations;

View File

@ -1519,7 +1519,7 @@ package Sinfo is
-- stub. During the analysis procedure, stubs in some situations
-- get rewritten by the corresponding bodies, and we set this flag
-- to remember that this happened. Note that it is not good enough
-- to rely on the use of Original_Tree here because of the case of
-- to rely on the use of Original_Node here because of the case of
-- nested instantiations where the substituted node can be copied.
-- Zero_Cost_Handling (Flag5-Sem)