[multiple changes]
2009-07-27 Robert Dewar <dewar@adacore.com> * g-sse.ads: Minor reformatting 2009-07-27 Arnaud Charlet <charlet@adacore.com> * xref_lib.adb (Add_Xref_File_Internal, Find_ALI_Files): Add support for alternate ali extension. * xr_tabls.adb (ALI_File_Name, Get_File, Set_Unvisited): Take into account Osint.ALI_Suffix. * osint.ads (ALI_Suffix): Make visible. * gnatfind.adb (Gnatfind): Add support for --ext= switch. * gnat_ugn.texi: Document new gnatfind --ext= switch. 2009-07-27 Ed Schonberg <schonberg@adacore.com> * sem.adb (Walk_Library_Items): If main unit is an instance body, do its spec first. 2009-07-27 Javier Miranda <miranda@adacore.com> * exp_disp.adb (Expand_Dispatching_Call): Generate the SCIL node after the dispatching call has is expanded. From-SVN: r150115
This commit is contained in:
parent
648abd7629
commit
0e47ff5cdd
|
@ -1,3 +1,27 @@
|
|||
2009-07-27 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* g-sse.ads: Minor reformatting
|
||||
|
||||
2009-07-27 Arnaud Charlet <charlet@adacore.com>
|
||||
|
||||
* xref_lib.adb (Add_Xref_File_Internal, Find_ALI_Files): Add support for
|
||||
alternate ali extension.
|
||||
* xr_tabls.adb (ALI_File_Name, Get_File, Set_Unvisited): Take into
|
||||
account Osint.ALI_Suffix.
|
||||
* osint.ads (ALI_Suffix): Make visible.
|
||||
* gnatfind.adb (Gnatfind): Add support for --ext= switch.
|
||||
* gnat_ugn.texi: Document new gnatfind --ext= switch.
|
||||
|
||||
2009-07-27 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem.adb (Walk_Library_Items): If main unit is an instance body, do
|
||||
its spec first.
|
||||
|
||||
2009-07-27 Javier Miranda <miranda@adacore.com>
|
||||
|
||||
* exp_disp.adb (Expand_Dispatching_Call): Generate the SCIL node after
|
||||
the dispatching call has is expanded.
|
||||
|
||||
2009-07-27 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): Reset the
|
||||
|
|
|
@ -643,17 +643,6 @@ package body Exp_Disp is
|
|||
Typ := Non_Limited_View (Typ);
|
||||
end if;
|
||||
|
||||
-- Generate the SCIL node for this dispatching call
|
||||
|
||||
if Generate_SCIL then
|
||||
Insert_Action (Call_Node,
|
||||
New_SCIL_Node
|
||||
(SN_Kind => Dispatching_Call,
|
||||
Related_Node => Call_Node,
|
||||
Entity => Typ,
|
||||
Target_Prim => Subp));
|
||||
end if;
|
||||
|
||||
if not Is_Limited_Type (Typ) then
|
||||
Eq_Prim_Op := Find_Prim_Op (Typ, Name_Op_Eq);
|
||||
end if;
|
||||
|
@ -877,6 +866,17 @@ package body Exp_Disp is
|
|||
-- to avoid the generation of spurious warnings under ZFP run-time.
|
||||
|
||||
Analyze_And_Resolve (Call_Node, Call_Typ, Suppress => All_Checks);
|
||||
|
||||
-- Generate the SCIL node for this dispatching call
|
||||
|
||||
if Generate_SCIL then
|
||||
Insert_Action (Call_Node,
|
||||
New_SCIL_Node
|
||||
(SN_Kind => Dispatching_Call,
|
||||
Related_Node => Call_Node,
|
||||
Entity => Typ,
|
||||
Target_Prim => Subp));
|
||||
end if;
|
||||
end Expand_Dispatching_Call;
|
||||
|
||||
---------------------------------
|
||||
|
|
|
@ -30,8 +30,8 @@
|
|||
------------------------------------------------------------------------------
|
||||
|
||||
-- This package is the root of a set aimed at offering Ada bindings to a
|
||||
-- subset of the Intel(r) Streaming SIMD Extensions with GNAT. The purpose is
|
||||
-- to allow access from Ada to the SSE facilities defined in the Intel(r)
|
||||
-- subset of the Intel(r) Streaming SIMD Extensions with GNAT. The purpose
|
||||
-- is to allow access from Ada to the SSE facilities defined in the Intel(r)
|
||||
-- compiler manuals, in particular in the Intrinsics Reference of the C++
|
||||
-- Compiler User's Guide, available from http://www.intel.com.
|
||||
|
||||
|
|
|
@ -15590,6 +15590,13 @@ Do not look for sources in the system default directory.
|
|||
@cindex @option{-nostdlib} (@command{gnatfind})
|
||||
Do not look for library files in the system default directory.
|
||||
|
||||
@item --ext=@var{extension}
|
||||
@cindex @option{--ext} (@command{gnatfind})
|
||||
Specify an alternate ali file extension. The default is @code{ali} and other
|
||||
extensions (e.g. @code{sli} for SPARK library files) may be specified via this
|
||||
switch. Note that if this switch overrides the default, which means that only
|
||||
the new extension will be considered.
|
||||
|
||||
@item --RTS=@var{rts-path}
|
||||
@cindex @option{--RTS} (@command{gnatfind})
|
||||
Specifies the default location of the runtime library. Same meaning as the
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1998-2008, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1998-2009, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -64,6 +64,9 @@ procedure Gnatfind is
|
|||
RTS_Specified : String_Access := null;
|
||||
-- Used to detect multiple use of --RTS= switch
|
||||
|
||||
EXT_Specified : String_Access := null;
|
||||
-- Used to detect multiple use of --ext= switch
|
||||
|
||||
procedure Parse_Cmd_Line;
|
||||
-- Parse every switch on the command line
|
||||
|
||||
|
@ -95,7 +98,7 @@ procedure Gnatfind is
|
|||
loop
|
||||
case
|
||||
GNAT.Command_Line.Getopt
|
||||
("a aI: aO: d e f g h I: nostdinc nostdlib p: r s t -RTS=")
|
||||
("a aI: aO: d e f g h I: nostdinc nostdlib p: r s t -RTS= -ext=")
|
||||
is
|
||||
when ASCII.NUL =>
|
||||
exit;
|
||||
|
@ -155,44 +158,71 @@ procedure Gnatfind is
|
|||
-- Only switch starting with -- recognized is --RTS
|
||||
|
||||
when '-' =>
|
||||
-- Check that it is the first time we see this switch
|
||||
|
||||
if RTS_Specified = null then
|
||||
RTS_Specified := new String'(GNAT.Command_Line.Parameter);
|
||||
if GNAT.Command_Line.Full_Switch = "-RTS" then
|
||||
-- Check that it is the first time we see this switch
|
||||
|
||||
elsif RTS_Specified.all /= GNAT.Command_Line.Parameter then
|
||||
Osint.Fail ("--RTS cannot be specified multiple times");
|
||||
end if;
|
||||
if RTS_Specified = null then
|
||||
RTS_Specified := new String'(GNAT.Command_Line.Parameter);
|
||||
|
||||
Opt.No_Stdinc := True;
|
||||
Opt.RTS_Switch := True;
|
||||
|
||||
declare
|
||||
Src_Path_Name : constant String_Ptr :=
|
||||
Get_RTS_Search_Dir
|
||||
(GNAT.Command_Line.Parameter, Include);
|
||||
Lib_Path_Name : constant String_Ptr :=
|
||||
Get_RTS_Search_Dir
|
||||
(GNAT.Command_Line.Parameter, Objects);
|
||||
|
||||
begin
|
||||
if Src_Path_Name /= null and then Lib_Path_Name /= null then
|
||||
Add_Search_Dirs (Src_Path_Name, Include);
|
||||
Add_Search_Dirs (Lib_Path_Name, Objects);
|
||||
|
||||
elsif Src_Path_Name = null and then Lib_Path_Name = null then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adainclude and adalib directories");
|
||||
|
||||
elsif Src_Path_Name = null then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adainclude directory");
|
||||
|
||||
elsif Lib_Path_Name = null then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adalib directory");
|
||||
elsif RTS_Specified.all /= GNAT.Command_Line.Parameter then
|
||||
Osint.Fail ("--RTS cannot be specified multiple times");
|
||||
end if;
|
||||
end;
|
||||
|
||||
Opt.No_Stdinc := True;
|
||||
Opt.RTS_Switch := True;
|
||||
|
||||
declare
|
||||
Src_Path_Name : constant String_Ptr :=
|
||||
Get_RTS_Search_Dir
|
||||
(GNAT.Command_Line.Parameter,
|
||||
Include);
|
||||
Lib_Path_Name : constant String_Ptr :=
|
||||
Get_RTS_Search_Dir
|
||||
(GNAT.Command_Line.Parameter,
|
||||
Objects);
|
||||
|
||||
begin
|
||||
if Src_Path_Name /= null
|
||||
and then Lib_Path_Name /= null
|
||||
then
|
||||
Add_Search_Dirs (Src_Path_Name, Include);
|
||||
Add_Search_Dirs (Lib_Path_Name, Objects);
|
||||
|
||||
elsif Src_Path_Name = null
|
||||
and then Lib_Path_Name = null
|
||||
then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adainclude and adalib directories");
|
||||
|
||||
elsif Src_Path_Name = null then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adainclude directory");
|
||||
|
||||
elsif Lib_Path_Name = null then
|
||||
Osint.Fail ("RTS path not valid: missing " &
|
||||
"adalib directory");
|
||||
end if;
|
||||
end;
|
||||
elsif GNAT.Command_Line.Full_Switch = "-ext" then
|
||||
-- Check that it is the first time we see this switch
|
||||
|
||||
if EXT_Specified = null then
|
||||
EXT_Specified := new String'(GNAT.Command_Line.Parameter);
|
||||
|
||||
elsif EXT_Specified.all /= GNAT.Command_Line.Parameter then
|
||||
Osint.Fail ("--ext cannot be specified multiple times");
|
||||
end if;
|
||||
|
||||
if EXT_Specified'Length
|
||||
= Osint.ALI_Default_Suffix'Length
|
||||
then
|
||||
Osint.ALI_Suffix := EXT_Specified.all'Access;
|
||||
else
|
||||
Osint.Fail ("--ext argument must have 3 characters");
|
||||
end if;
|
||||
|
||||
end if;
|
||||
|
||||
when others =>
|
||||
Write_Usage;
|
||||
|
@ -281,6 +311,7 @@ procedure Gnatfind is
|
|||
& " directory");
|
||||
Put_Line (" -nostdlib Don't look for library files in the system"
|
||||
& " default directory");
|
||||
Put_Line (" --ext=xxx Specify alternate ali file extension");
|
||||
Put_Line (" --RTS=dir specify the default source and object search"
|
||||
& " path");
|
||||
Put_Line (" -p file Use file as the default project file");
|
||||
|
|
|
@ -571,11 +571,12 @@ package Osint is
|
|||
pragma Import (C, Len_Arg, "__gnat_len_arg");
|
||||
-- Get length of argument
|
||||
|
||||
private
|
||||
|
||||
ALI_Suffix : constant String_Ptr := new String'("ali");
|
||||
ALI_Default_Suffix : constant String_Ptr := new String'("ali");
|
||||
ALI_Suffix : String_Ptr := ALI_Default_Suffix;
|
||||
-- The suffix used for the library files (also known as ALI files)
|
||||
|
||||
private
|
||||
|
||||
Current_Main : File_Name_Type := No_File;
|
||||
-- Used to save a simple file name between calls to Next_Main_Source and
|
||||
-- Read_Source_File. If the file name argument to Read_Source_File is
|
||||
|
|
|
@ -1762,7 +1762,7 @@ package body Sem is
|
|||
if Nkind (Item) = N_Package_Declaration then
|
||||
Body_Unit := Library_Unit (CU);
|
||||
|
||||
elsif Nkind (Item) = N_Package_Body then
|
||||
elsif Nkind_In (Item, N_Package_Body, N_Subprogram_Body) then
|
||||
Body_Unit := CU;
|
||||
end if;
|
||||
|
||||
|
@ -1860,7 +1860,26 @@ package body Sem is
|
|||
|
||||
if not Done (Main_Unit) then
|
||||
Do_Main := True;
|
||||
Do_Unit_And_Dependents (Cunit (Main_Unit), Unit (Cunit (Main_Unit)));
|
||||
|
||||
declare
|
||||
Main_CU : constant Node_Id := Cunit (Main_Unit);
|
||||
|
||||
begin
|
||||
|
||||
-- If the main unit is an instantiation, the body appears
|
||||
-- before the instance spec, which is added later to the
|
||||
-- unit list. Do the spec if present, body will follow.
|
||||
|
||||
if Nkind (Original_Node (Unit (Main_CU)))
|
||||
in N_Generic_Instantiation
|
||||
and then Present (Library_Unit (Main_CU))
|
||||
then
|
||||
Do_Unit_And_Dependents
|
||||
(Library_Unit (Main_CU), Unit (Library_Unit (Main_CU)));
|
||||
else
|
||||
Do_Unit_And_Dependents (Main_CU, Unit (Main_CU));
|
||||
end if;
|
||||
end;
|
||||
end if;
|
||||
|
||||
if Debug_Unit_Walk then
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1998-2008, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1998-2009, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -495,9 +495,10 @@ package body Xr_Tabls is
|
|||
|
||||
begin
|
||||
if Index /= 0 then
|
||||
return Ada_File_Name (Ada_File_Name'First .. Index) & "ali";
|
||||
return Ada_File_Name (Ada_File_Name'First .. Index)
|
||||
& Osint.ALI_Suffix.all;
|
||||
else
|
||||
return Ada_File_Name & ".ali";
|
||||
return Ada_File_Name & "." & Osint.ALI_Suffix.all;
|
||||
end if;
|
||||
end ALI_File_Name;
|
||||
|
||||
|
@ -823,7 +824,9 @@ package body Xr_Tabls is
|
|||
end if;
|
||||
|
||||
if File.Dir = null then
|
||||
if Ada.Strings.Fixed.Tail (File.File.all, 3) = "ali" then
|
||||
if Ada.Strings.Fixed.Tail (File.File.all, 3)
|
||||
= Osint.ALI_Suffix.all
|
||||
then
|
||||
Tmp := Locate_Regular_File
|
||||
(Internal_Strip (File.File.all), Directories.Obj_Dir);
|
||||
else
|
||||
|
@ -1392,7 +1395,7 @@ package body Xr_Tabls is
|
|||
-- least for gnatxref, and probably for gnatfind as well
|
||||
|
||||
if F'Length > 4
|
||||
and then F (F'Last - 3 .. F'Last) = ".ali"
|
||||
and then F (F'Last - 3 .. F'Last) = "." & Osint.ALI_Suffix.all
|
||||
then
|
||||
Unvisited_Files := new Unvisited_Files_Record'
|
||||
(File => File_Ref,
|
||||
|
|
|
@ -308,7 +308,7 @@ package body Xref_Lib is
|
|||
-- Case where we have an ALI file, accept it even though this is
|
||||
-- not official usage, since the intention is obvious
|
||||
|
||||
if Tail (File, 4) = ".ali" then
|
||||
if Tail (File, 4) = "." & Osint.ALI_Suffix.all then
|
||||
File_Ref := Add_To_Xref_File
|
||||
(File, Visited => False, Emit_Warning => True);
|
||||
|
||||
|
@ -466,7 +466,9 @@ package body Xref_Lib is
|
|||
return;
|
||||
end if;
|
||||
|
||||
elsif Last > 4 and then Dir_Ent (Last - 3 .. Last) = ".ali" then
|
||||
elsif Last > 4
|
||||
and then Dir_Ent (Last - 3 .. Last) = "." & Osint.ALI_Suffix.all
|
||||
then
|
||||
File_Ref :=
|
||||
Add_To_Xref_File (Dir_Ent (1 .. Last), Visited => False);
|
||||
end if;
|
||||
|
|
Loading…
Reference in New Issue