+2013-04-11 Robert Dewar <dewar@adacore.com>
+
+ * sem_prag.adb, sem_attr.adb, gnat1drv.adb, prj-makr.adb,
+ opt.ads, sem_ch13.adb: Minor reformatting.
+ * debug.adb: Minor comment fix (remove junk .I doc).
+
+2013-04-11 Thomas Quinot <quinot@adacore.com>
+
+ * rtsfind.ads, exp_dist.adb, exp_dist.ads (Rtsfind.PCS_Version, case
+ PolyORB): Bump to 6.
+ (Exp_Dist.PolyORB_Support): Replace TC_Build with
+ Build_Complex_TC.
+
2013-04-11 Arnaud Charlet <charlet@adacore.com>
* debug.adb, sem_prag.adb, par-ch2.adb, sem_attr.adb, gnat1drv.adb,
-- will only generate Why code for package Standard. Any given input
-- file will be ignored.
- -- d.I Generate SCIL mode. Generate intermediate code for the sake of
- -- of static analysis tools, and ensure additional tree consistency
- -- between different compilations of specs.
-
-- d.J Disable parallel SCIL generation. Normally SCIL file generation is
-- done in parallel to speed processing. This switch disables this
-- behavior.
Make_Simple_Return_Statement (Loc,
Expression =>
Make_Function_Call (Loc,
- Name => New_Occurrence_Of (RTE (RE_TC_Build), Loc),
+ Name =>
+ New_Occurrence_Of (RTE (RE_Build_Complex_TC), Loc),
Parameter_Associations => New_List (
- New_Occurrence_Of (RTE (RE_TC_Object), Loc),
+ New_Occurrence_Of (RTE (RE_Tk_Objref), Loc),
Make_Aggregate (Loc,
Expressions =>
New_List (
function Make_Constructed_TypeCode
(Kind : Entity_Id;
Parameters : List_Id) return Node_Id;
- -- Call TC_Build with the given kind and parameters
+ -- Call Build_Complex_TC with the given kind and parameters
procedure Return_Constructed_TypeCode (Kind : Entity_Id);
- -- Make a return statement that calls TC_Build with the given
- -- typecode kind, and the constructed parameters list.
+ -- Make a return statement that calls Build_Complex_TC with the
+ -- given typecode kind, and the constructed parameters list.
procedure Return_Alias_TypeCode (Base_TypeCode : Node_Id);
-- Return a typecode that is a TC_Alias for the given typecode
procedure Return_Alias_TypeCode (Base_TypeCode : Node_Id) is
begin
Add_TypeCode_Parameter (Base_TypeCode, Parameters);
- Return_Constructed_TypeCode (RTE (RE_TC_Alias));
+ Return_Constructed_TypeCode (RTE (RE_Tk_Alias));
end Return_Alias_TypeCode;
-------------------------------
Constructed_TC : constant Node_Id :=
Make_Function_Call (Loc,
Name =>
- New_Occurrence_Of (RTE (RE_TC_Build), Loc),
+ New_Occurrence_Of (RTE (RE_Build_Complex_TC), Loc),
Parameter_Associations => New_List (
New_Occurrence_Of (Kind, Loc),
Make_Aggregate (Loc,
Add_TypeCode_Parameter
(Make_Constructed_TypeCode
- (RTE (RE_TC_Struct), Struct_TC_Params),
+ (RTE (RE_Tk_Struct), Struct_TC_Params),
Union_TC_Params);
Add_String_Parameter (Name_Str, Union_TC_Params);
Add_TypeCode_Parameter
(Make_Constructed_TypeCode
- (RTE (RE_TC_Union), Union_TC_Params),
+ (RTE (RE_Tk_Union), Union_TC_Params),
Params);
Add_String_Parameter (Name_Str, Params);
TC_Append_Record_Traversal
(Parameters, Component_List (Rdef),
Empty, Dummy_Counter);
- Return_Constructed_TypeCode (RTE (RE_TC_Struct));
+ Return_Constructed_TypeCode (RTE (RE_Tk_Struct));
end;
end if;
for J in 1 .. Ndim loop
if Constrained then
Inner_TypeCode := Make_Constructed_TypeCode
- (RTE (RE_TC_Array), New_List (
+ (RTE (RE_Tk_Array), New_List (
Build_To_Any_Call (Loc,
OK_Convert_To (RTE (RE_Unsigned_32),
Make_Attribute_Reference (Loc,
Next_Index (Indx);
Inner_TypeCode := Make_Constructed_TypeCode
- (RTE (RE_TC_Sequence), New_List (
+ (RTE (RE_Tk_Sequence), New_List (
Build_To_Any_Call (Loc,
OK_Convert_To (RTE (RE_Unsigned_32),
Make_Integer_Literal (Loc, 0)),
Start_String;
Store_String_Char ('V');
Add_String_Parameter (End_String, Parameters);
- Return_Constructed_TypeCode (RTE (RE_TC_Struct));
+ Return_Constructed_TypeCode (RTE (RE_Tk_Struct));
end if;
end;
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, 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- --
PCS_Version_Number : constant array (PCS_Names) of Int :=
(Name_No_DSA => 1,
Name_GARLIC_DSA => 1,
- Name_PolyORB_DSA => 5);
+ Name_PolyORB_DSA => 6);
-- PCS interface version. This is used to check for consistency between the
-- compiler used to generate distribution stubs and the PCS implementation.
-- It must be incremented whenever a change is made to the generated code
Force_ALI_Tree_File := True;
Try_Semantics := True;
- -- Make the Ada front-end more liberal to support other Ada compilers
+ -- Make the Ada front-end more liberal so that the compiler will
+ -- allow illegal code that is allowed by other compilers. CodePeer
+ -- is in the business of finding problems, not enforcing rules!
+ -- This is useful when using CodePeer mode with other compilers.
+
Relaxed_RM_Semantics := True;
end if;
Relaxed_RM_Semantics : Boolean := False;
-- GNAT
-- Set to True to ignore some Ada semantic error to help parse legacy
- -- Ada code for use in e.g. static analysis (such as CodePeer).
+ -- Ada code for use in e.g. static analysis (such as CodePeer). This
+ -- deals with cases where other compilers allow illegal constructs. Tools
+ -- such as CodePeer are interested in analyzing code rather than enforcing
+ -- legality rules, so as long as these illegal constructs end up with code
+ -- that can be handled by the tool in question, there is no reason to
+ -- reject the code that is considered correct by the other compiler.
Replace_In_Comments : Boolean := False;
-- GNATPREP
Project_File_Extension;
Output_Name_Last := Output_Name_Last + Project_File_Extension'Length;
- -- Back up project file if it already exists
+ -- Back up project file if it already exists (not needed in VMS since
+ -- versioning of files takes care of this requirement on VMS).
if not Hostparm.OpenVMS
and then not Opt.No_Backup
- and then
- Is_Regular_File (Path_Name (1 .. Path_Last))
+ and then Is_Regular_File (Path_Name (1 .. Path_Last))
then
declare
- Discard : Boolean;
+ Discard : Boolean;
Saved_Path : constant String :=
- Path_Name (1 .. Path_Last) & ".saved_";
- Nmb : Natural := 0;
+ Path_Name (1 .. Path_Last) & ".saved_";
+ Nmb : Natural;
+
begin
+ Nmb := 0;
loop
declare
Img : constant String := Nmb'Img;
+
begin
if not Is_Regular_File
- (Saved_Path & Img (2 .. Img'Last))
+ (Saved_Path & Img (2 .. Img'Last))
then
Copy_File
- (Name => Path_Name (1 .. Path_Last),
+ (Name => Path_Name (1 .. Path_Last),
Pathname => Saved_Path & Img (2 .. Img'Last),
- Mode => Overwrite,
- Success => Discard);
+ Mode => Overwrite,
+ Success => Discard);
exit;
end if;
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, 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- --
RE_Release_Buffer, -- System.Partition_Interface
RE_BS_To_Any, -- System.Partition_Interface
RE_Any_To_BS, -- System.Partition_Interface
+ RE_Build_Complex_TC, -- System.Partition_Interface
+ RE_Get_TC, -- System.Partition_Interface
+ RE_Set_TC, -- System.Partition_Interface
RE_FA_A, -- System.Partition_Interface
RE_FA_B, -- System.Partition_Interface
RE_TA_Std_String, -- System.Partition_Interface
RE_TA_TC, -- System.Partition_Interface
- RE_TC_Alias, -- System.Partition_Interface
- RE_TC_Build, -- System.Partition_Interface
- RE_Get_TC, -- System.Partition_Interface
- RE_Set_TC, -- System.Partition_Interface
RE_TC_A, -- System.Partition_Interface
RE_TC_B, -- System.Partition_Interface
RE_TC_C, -- System.Partition_Interface
RE_TC_Opaque, -- System.Partition_Interface
RE_TC_WC, -- System.Partition_Interface
RE_TC_WWC, -- System.Partition_Interface
- RE_TC_Array, -- System.Partition_Interface
- RE_TC_Sequence, -- System.Partition_Interface
RE_TC_String, -- System.Partition_Interface
- RE_TC_Struct, -- System.Partition_Interface
- RE_TC_Union, -- System.Partition_Interface
- RE_TC_Object, -- System.Partition_Interface
+
+ RE_Tk_Alias, -- System.Partition_Interface
+ RE_Tk_Array, -- System.Partition_Interface
+ RE_Tk_Sequence, -- System.Partition_Interface
+ RE_Tk_Struct, -- System.Partition_Interface
+ RE_Tk_Objref, -- System.Partition_Interface
+ RE_Tk_Union, -- System.Partition_Interface
RE_IS_Is1, -- System.Scalar_Values
RE_IS_Is2, -- System.Scalar_Values
RE_Release_Buffer => System_Partition_Interface,
RE_BS_To_Any => System_Partition_Interface,
RE_Any_To_BS => System_Partition_Interface,
+ RE_Build_Complex_TC => System_Partition_Interface,
+ RE_Get_TC => System_Partition_Interface,
+ RE_Set_TC => System_Partition_Interface,
RE_FA_A => System_Partition_Interface,
RE_FA_B => System_Partition_Interface,
RE_TA_Std_String => System_Partition_Interface,
RE_TA_TC => System_Partition_Interface,
- RE_TC_Alias => System_Partition_Interface,
- RE_TC_Build => System_Partition_Interface,
- RE_Get_TC => System_Partition_Interface,
- RE_Set_TC => System_Partition_Interface,
RE_TC_A => System_Partition_Interface,
RE_TC_B => System_Partition_Interface,
RE_TC_C => System_Partition_Interface,
RE_TC_Opaque => System_Partition_Interface,
RE_TC_WC => System_Partition_Interface,
RE_TC_WWC => System_Partition_Interface,
- RE_TC_Array => System_Partition_Interface,
- RE_TC_Sequence => System_Partition_Interface,
RE_TC_String => System_Partition_Interface,
- RE_TC_Struct => System_Partition_Interface,
- RE_TC_Union => System_Partition_Interface,
- RE_TC_Object => System_Partition_Interface,
+
+ RE_Tk_Alias => System_Partition_Interface,
+ RE_Tk_Array => System_Partition_Interface,
+ RE_Tk_Sequence => System_Partition_Interface,
+ RE_Tk_Struct => System_Partition_Interface,
+ RE_Tk_Objref => System_Partition_Interface,
+ RE_Tk_Union => System_Partition_Interface,
RE_Global_Pool_Object => System_Pool_Global,
then
null;
+ -- Some other compilers allow dubious use of X'???'Size
+
elsif Relaxed_RM_Semantics
and then Nkind (P) = N_Attribute_Reference
then
procedure Too_Late is
begin
+ -- Other compilers seem more relaxed about rep items appearing too
+ -- late. Since analysis tools typically don't care about rep items
+ -- anyway, no reason to be too strict about this.
+
if not Relaxed_RM_Semantics then
Error_Msg_N ("|representation item appears too late!", N);
end if;
-- is itself a library-level declaration is done elsewhere.
-- Note: we omit this check in Relaxed_RM_Semantics mode to properly
- -- handle code prior to AI-0033.
+ -- handle code prior to AI-0033. Analysis tools typically are not
+ -- interested in this pragma in any case, so no need to worry too
+ -- much about its placement.
if Inside_A_Generic then
if Ekind (Scope (Current_Scope)) = E_Generic_Package