mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-21 14:50:57 +08:00
[multiple changes]
2010-10-21 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Enter_Overloaded_Entity): Refine warning message about hiding, to remove noise warnings about hiding predefined operators. 2010-10-21 Emmanuel Briot <briot@adacore.com> * g-comlin.adb (Add_Switch): Fix handling of switches with no separator when the parameter has length 1. 2010-10-21 Jose Ruiz <ruiz@adacore.com> * sem_prag.adb (Set_Ravenscar_Profile): Enforce the restrictions of no dependence on Ada.Execution_Time.Timers, Ada.Execution_Time.Group_Budget, and System.Multiprocessors.Dispatching_Domains which are part of the Ravenscar Profile. * impunit.adb (Non_Imp_File_Names_05): Add the file "a-etgrbu" to the list of Ada 2005 files for package Ada.Execution_Time.Group_Budgets. (Non_Imp_File_Names_12): Add the file "s-mudido" to the list of Ada 2012 files for package System.Mutiprocessors.Dispatching_Domains. 2010-10-21 Tristan Gingold <gingold@adacore.com> * ug_words, vms_data.ads: Define the VMS qualifier for -gnateE. 2010-10-21 Thomas Quinot <quinot@adacore.com> * sem_ch3.ads (Process_Discriminants): Clarify cases where this is called for a completion. 2010-10-21 Geert Bosch <bosch@adacore.com> * uintp.ads: Expand image buffer to have enough room for 128-bit values * urealp.ads (UR_Write): Write constants in base 16 in hexadecimal notation; either as fixed point literal or in canonical radix 16 floating point form. From-SVN: r165761
This commit is contained in:
parent
3b42c566b8
commit
7fc5387116
@ -1,3 +1,41 @@
|
||||
2010-10-21 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* sem_ch6.adb (Enter_Overloaded_Entity): Refine warning message about
|
||||
hiding, to remove noise warnings about hiding predefined operators.
|
||||
|
||||
2010-10-21 Emmanuel Briot <briot@adacore.com>
|
||||
|
||||
* g-comlin.adb (Add_Switch): Fix handling of switches with no separator
|
||||
when the parameter has length 1.
|
||||
|
||||
2010-10-21 Jose Ruiz <ruiz@adacore.com>
|
||||
|
||||
* sem_prag.adb (Set_Ravenscar_Profile): Enforce the restrictions of no
|
||||
dependence on Ada.Execution_Time.Timers,
|
||||
Ada.Execution_Time.Group_Budget, and
|
||||
System.Multiprocessors.Dispatching_Domains which are part of the
|
||||
Ravenscar Profile.
|
||||
* impunit.adb (Non_Imp_File_Names_05): Add the file "a-etgrbu" to the
|
||||
list of Ada 2005 files for package Ada.Execution_Time.Group_Budgets.
|
||||
(Non_Imp_File_Names_12): Add the file "s-mudido" to the list of Ada 2012
|
||||
files for package System.Mutiprocessors.Dispatching_Domains.
|
||||
|
||||
2010-10-21 Tristan Gingold <gingold@adacore.com>
|
||||
|
||||
* ug_words, vms_data.ads: Define the VMS qualifier for -gnateE.
|
||||
|
||||
2010-10-21 Thomas Quinot <quinot@adacore.com>
|
||||
|
||||
* sem_ch3.ads (Process_Discriminants): Clarify cases where this is
|
||||
called for a completion.
|
||||
|
||||
2010-10-21 Geert Bosch <bosch@adacore.com>
|
||||
|
||||
* uintp.ads: Expand image buffer to have enough room for 128-bit values
|
||||
* urealp.ads (UR_Write): Write constants in base 16 in hexadecimal
|
||||
notation; either as fixed point literal or in canonical radix 16
|
||||
floating point form.
|
||||
|
||||
2010-10-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* a-cgaaso.ads, a-tags.ads, exp_ch3.adb, exp_attr.adb, exp_ch4.adb,
|
||||
|
@ -2109,14 +2109,21 @@ package body GNAT.Command_Line is
|
||||
Index : Integer)
|
||||
is
|
||||
pragma Unreferenced (Index);
|
||||
Sep : Character;
|
||||
|
||||
begin
|
||||
if Separator = "" then
|
||||
Sep := ASCII.NUL;
|
||||
else
|
||||
Sep := Separator (Separator'First);
|
||||
end if;
|
||||
|
||||
if Cmd.Expanded = null then
|
||||
Cmd.Expanded := new Argument_List'(1 .. 1 => new String'(Simple));
|
||||
|
||||
if Param /= "" then
|
||||
Cmd.Params :=
|
||||
new Argument_List'(1 .. 1 => new String'(Separator & Param));
|
||||
new Argument_List'(1 .. 1 => new String'(Sep & Param));
|
||||
else
|
||||
Cmd.Params := new Argument_List'(1 .. 1 => null);
|
||||
end if;
|
||||
@ -2137,7 +2144,7 @@ package body GNAT.Command_Line is
|
||||
((Cmd.Params (C) = null and then Param = "")
|
||||
or else
|
||||
(Cmd.Params (C) /= null
|
||||
and then Cmd.Params (C).all = Separator & Param))
|
||||
and then Cmd.Params (C).all = Sep & Param))
|
||||
and then
|
||||
((Cmd.Sections (C) = null and then Section = "")
|
||||
or else
|
||||
@ -2156,7 +2163,7 @@ package body GNAT.Command_Line is
|
||||
if Param /= "" then
|
||||
Add
|
||||
(Cmd.Params,
|
||||
new String'(Separator & Param),
|
||||
new String'(Sep & Param),
|
||||
Add_Before);
|
||||
else
|
||||
Add
|
||||
|
@ -394,6 +394,7 @@ package body Impunit is
|
||||
"a-disedf", -- Ada.Dispatching.EDF
|
||||
"a-dispat", -- Ada.Dispatching
|
||||
"a-envvar", -- Ada.Environment_Variables
|
||||
"a-etgrbu", -- Ada.Execution_Time.Group_Budgets
|
||||
"a-exetim", -- Ada.Execution_Time
|
||||
"a-extiti", -- Ada.Execution_Time.Timers
|
||||
"a-izteio", -- Ada.Integer_Wide_Wide_Text_IO
|
||||
@ -504,7 +505,8 @@ package body Impunit is
|
||||
-- The following units should be used only in Ada 2012 mode
|
||||
|
||||
Non_Imp_File_Names_12 : constant File_List := (
|
||||
0 => "s-multip"); -- System.Mutiprocessors
|
||||
"s-multip", -- System.Multiprocessors
|
||||
"s-mudido"); -- System.Multiprocessors.Dispatching_Domains
|
||||
|
||||
-----------------------
|
||||
-- Alternative Units --
|
||||
|
@ -277,6 +277,10 @@ package Sem_Ch3 is
|
||||
-- Process the discriminants contained in an N_Full_Type_Declaration or
|
||||
-- N_Incomplete_Type_Decl node N. If the declaration is a completion,
|
||||
-- Prev is entity on the partial view, on which references are posted.
|
||||
-- However, note that Process_Discriminants is called for a completion only
|
||||
-- if partial view had no discriminants (else we just check conformance
|
||||
-- between the two views and do not call Process_Discriminants again for
|
||||
-- the completion).
|
||||
|
||||
function Replace_Anonymous_Access_To_Protected_Subprogram
|
||||
(N : Node_Id) return Entity_Id;
|
||||
|
@ -5914,15 +5914,30 @@ package body Sem_Ch6 is
|
||||
E := Homonym (E);
|
||||
exit when No (E);
|
||||
|
||||
-- Warn unless genuine overloading
|
||||
-- Warn unless genuine overloading. Do not emit warning on
|
||||
-- hiding predefined operators in Standard (these are either an
|
||||
-- (artifact of our implicit declarations, or simple noise) but
|
||||
-- keep warning on a operator defined on a local subtype, because
|
||||
-- of the real danger that different operators may be applied in
|
||||
-- various parts of the program.
|
||||
|
||||
if (not Is_Overloadable (E) or else Subtype_Conformant (E, S))
|
||||
and then (Is_Immediately_Visible (E)
|
||||
or else
|
||||
Is_Potentially_Use_Visible (S))
|
||||
then
|
||||
Error_Msg_Sloc := Sloc (E);
|
||||
Error_Msg_N ("declaration of & hides one#?", S);
|
||||
if Scope (E) /= Standard_Standard then
|
||||
Error_Msg_Sloc := Sloc (E);
|
||||
Error_Msg_N ("declaration of & hides one#?", S);
|
||||
|
||||
elsif Nkind (S) = N_Defining_Operator_Symbol
|
||||
and then
|
||||
Scope (
|
||||
Base_Type (Etype (First_Formal (S)))) /= Scope (S)
|
||||
then
|
||||
Error_Msg_N
|
||||
("declaration of & hides predefined operator?", S);
|
||||
end if;
|
||||
end if;
|
||||
end loop;
|
||||
end if;
|
||||
|
@ -5410,7 +5410,20 @@ package body Sem_Prag is
|
||||
|
||||
-- Set required restrictions (see System.Rident for detailed list)
|
||||
|
||||
-- Set the No_Dependence rules
|
||||
-- No_Dependence => Ada.Asynchronous_Task_Control
|
||||
-- No_Dependence => Ada.Calendar
|
||||
-- No_Dependence => Ada.Execution_Time.Group_Budget
|
||||
-- No_Dependence => Ada.Execution_Time.Timers
|
||||
-- No_Dependence => Ada.Task_Attributes
|
||||
-- No_Dependence => System.Multiprocessors.Dispatching_Domains
|
||||
|
||||
procedure Set_Ravenscar_Profile (N : Node_Id) is
|
||||
Prefix_Entity : Entity_Id;
|
||||
Selector_Entity : Entity_Id;
|
||||
Prefix_Node : Node_Id;
|
||||
Node : Node_Id;
|
||||
|
||||
begin
|
||||
-- pragma Task_Dispatching_Policy (FIFO_Within_Priorities)
|
||||
|
||||
@ -5459,6 +5472,106 @@ package body Sem_Prag is
|
||||
|
||||
Set_Profile_Restrictions
|
||||
(Ravenscar, N, Warn => Treat_Restrictions_As_Warnings);
|
||||
|
||||
-- Set the No_Dependence restrictions
|
||||
|
||||
-- The following No_Dependence restrictions:
|
||||
-- No_Dependence => Ada.Asynchronous_Task_Control
|
||||
-- No_Dependence => Ada.Calendar
|
||||
-- No_Dependence => Ada.Task_Attributes
|
||||
-- are already set by previous call to Set_Profile_Restrictions.
|
||||
|
||||
-- Set the following restrictions which were added to Ada 2005:
|
||||
-- No_Dependence => Ada.Execution_Time.Group_Budget
|
||||
-- No_Dependence => Ada.Execution_Time.Timers
|
||||
|
||||
if Ada_Version >= Ada_2005 then
|
||||
Name_Buffer (1 .. 3) := "ada";
|
||||
Name_Len := 3;
|
||||
|
||||
Prefix_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Name_Buffer (1 .. 14) := "execution_time";
|
||||
Name_Len := 14;
|
||||
|
||||
Selector_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Prefix_Node :=
|
||||
Make_Selected_Component
|
||||
(Sloc => Loc,
|
||||
Prefix => Prefix_Entity,
|
||||
Selector_Name => Selector_Entity);
|
||||
|
||||
Name_Buffer (1 .. 13) := "group_budgets";
|
||||
Name_Len := 13;
|
||||
|
||||
Selector_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Node :=
|
||||
Make_Selected_Component
|
||||
(Sloc => Loc,
|
||||
Prefix => Prefix_Node,
|
||||
Selector_Name => Selector_Entity);
|
||||
|
||||
Set_Restriction_No_Dependence
|
||||
(Unit => Node,
|
||||
Warn => Treat_Restrictions_As_Warnings,
|
||||
Profile => Ravenscar);
|
||||
|
||||
Name_Buffer (1 .. 6) := "timers";
|
||||
Name_Len := 6;
|
||||
|
||||
Selector_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Node :=
|
||||
Make_Selected_Component
|
||||
(Sloc => Loc,
|
||||
Prefix => Prefix_Node,
|
||||
Selector_Name => Selector_Entity);
|
||||
|
||||
Set_Restriction_No_Dependence
|
||||
(Unit => Node,
|
||||
Warn => Treat_Restrictions_As_Warnings,
|
||||
Profile => Ravenscar);
|
||||
end if;
|
||||
|
||||
-- Set the following restrictions which was added to Ada 2012 (see
|
||||
-- AI-0171):
|
||||
-- No_Dependence => System.Multiprocessors.Dispatching_Domains
|
||||
|
||||
if Ada_Version >= Ada_2012 then
|
||||
Name_Buffer (1 .. 6) := "system";
|
||||
Name_Len := 6;
|
||||
|
||||
Prefix_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Name_Buffer (1 .. 15) := "multiprocessors";
|
||||
Name_Len := 15;
|
||||
|
||||
Selector_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Prefix_Node :=
|
||||
Make_Selected_Component
|
||||
(Sloc => Loc,
|
||||
Prefix => Prefix_Entity,
|
||||
Selector_Name => Selector_Entity);
|
||||
|
||||
Name_Buffer (1 .. 19) := "dispatching_domains";
|
||||
Name_Len := 19;
|
||||
|
||||
Selector_Entity := Make_Identifier (Loc, Name_Find);
|
||||
|
||||
Node :=
|
||||
Make_Selected_Component
|
||||
(Sloc => Loc,
|
||||
Prefix => Prefix_Node,
|
||||
Selector_Name => Selector_Entity);
|
||||
|
||||
Set_Restriction_No_Dependence
|
||||
(Unit => Node,
|
||||
Warn => Treat_Restrictions_As_Warnings,
|
||||
Profile => Ravenscar);
|
||||
end if;
|
||||
end Set_Ravenscar_Profile;
|
||||
|
||||
-- Start of processing for Analyze_Pragma
|
||||
|
@ -59,6 +59,7 @@ gcc -c ^ GNAT COMPILE
|
||||
-gnatDG ^ /XDEBUG /EXPAND_SOURCEA
|
||||
-gnatD ^ /XDEBUG
|
||||
-gnatec ^ /CONFIGURATION_PRAGMAS_FILE
|
||||
-gnateE ^ /EXTRA_EXCEPTION_INFORMATION
|
||||
-gnateD ^ /SYMBOL_PREPROCESSING
|
||||
-gnatef ^ /FULL_PATH_IN_BRIEF_MESSAGES
|
||||
-gnateG ^ /GENERATE_PROCESSED_SOURCE
|
||||
|
@ -261,7 +261,7 @@ package Uintp is
|
||||
-- or decimal format. Auto, the default setting, lets the routine make
|
||||
-- a decision based on the value.
|
||||
|
||||
UI_Image_Max : constant := 32;
|
||||
UI_Image_Max : constant := 48; -- Enough for a 128-bit number
|
||||
UI_Image_Buffer : String (1 .. UI_Image_Max);
|
||||
UI_Image_Length : Natural;
|
||||
-- Buffer used for UI_Image as described below
|
||||
|
@ -1323,48 +1323,8 @@ package body Urealp is
|
||||
if Val.Num = 0 then
|
||||
Write_Str ("0.0");
|
||||
|
||||
-- Constants in base 10 can be written in normal Ada literal style
|
||||
|
||||
elsif Val.Rbase = 10 then
|
||||
|
||||
-- Use fixed-point format for small scaling values
|
||||
|
||||
if Val.Den = 0 then
|
||||
UI_Write (Val.Num, Decimal);
|
||||
Write_Str (".0");
|
||||
|
||||
elsif Val.Den = 1 then
|
||||
UI_Write (Val.Num / 10, Decimal);
|
||||
Write_Char ('.');
|
||||
UI_Write (Val.Num mod 10, Decimal);
|
||||
|
||||
elsif Val.Den = 2 then
|
||||
UI_Write (Val.Num / 100, Decimal);
|
||||
Write_Char ('.');
|
||||
UI_Write (Val.Num mod 100 / 10, Decimal);
|
||||
UI_Write (Val.Num mod 10, Decimal);
|
||||
|
||||
elsif Val.Den = -1 then
|
||||
UI_Write (Val.Num, Decimal);
|
||||
Write_Str ("0.0");
|
||||
|
||||
elsif Val.Den = -2 then
|
||||
UI_Write (Val.Num, Decimal);
|
||||
Write_Str ("00.0");
|
||||
|
||||
-- Else use exponential format
|
||||
|
||||
else
|
||||
UI_Write (Val.Num / 10, Decimal);
|
||||
Write_Char ('.');
|
||||
UI_Write (Val.Num mod 10, Decimal);
|
||||
Write_Char ('E');
|
||||
UI_Write (1 - Val.Den, Decimal);
|
||||
end if;
|
||||
|
||||
-- If we have a constant in a base other than 10, and the denominator
|
||||
-- is zero, then the value is simply the numerator value, since we are
|
||||
-- dividing by base**0, which is 1.
|
||||
-- For constants with a denominator of zero, the value is simply the
|
||||
-- numerator value, since we are dividing by base**0, which is 1.
|
||||
|
||||
elsif Val.Den = 0 then
|
||||
UI_Write (Val.Num, Decimal);
|
||||
@ -1411,6 +1371,96 @@ package body Urealp is
|
||||
Write_Str (".0");
|
||||
end if;
|
||||
|
||||
-- Constants in base 2, 10 or 16 can be written in normal Ada literal
|
||||
-- style, as long as they fit in the UI_Image_Buffer. Using hexadecimal
|
||||
-- notation, 4 bytes are required for the 16# # part, and every fifth
|
||||
-- character is an underscore. So, a buffer of size N has room for
|
||||
|
||||
-- ((N - 4) - (N - 4) / 5) * 4 bits
|
||||
|
||||
-- or at least
|
||||
|
||||
-- N * 16 / 5 - 12 bits
|
||||
|
||||
elsif (Val.Rbase = 10 or else Val.Rbase = 16)
|
||||
and then Num_Bits (Val.Num) < UI_Image_Buffer'Length * 16 / 5 - 12
|
||||
then
|
||||
declare
|
||||
Format : UI_Format := Decimal;
|
||||
Scale : Uint;
|
||||
|
||||
begin
|
||||
if Val.Rbase = 16 then
|
||||
Write_Str ("16#");
|
||||
Format := Hex;
|
||||
end if;
|
||||
|
||||
-- Use fixed-point format for small scaling values
|
||||
|
||||
if Val.Den = 1 then
|
||||
UI_Write (Val.Num / Val.Rbase, Format);
|
||||
Write_Char ('.');
|
||||
UI_Write (Val.Num mod Val.Rbase, Format);
|
||||
|
||||
elsif Val.Den = 2 then
|
||||
UI_Write (Val.Num / Val.Rbase**Uint_2, Format);
|
||||
Write_Char ('.');
|
||||
UI_Write (Val.Num mod Val.Rbase**Uint_2 / Val.Rbase, Format);
|
||||
UI_Write (Val.Num mod Val.Rbase, Format);
|
||||
|
||||
elsif Val.Den = -1 then
|
||||
UI_Write (Val.Num, Format);
|
||||
Write_Str ("0.0");
|
||||
|
||||
elsif Val.Den = -2 then
|
||||
UI_Write (Val.Num, Format);
|
||||
Write_Str ("00.0");
|
||||
|
||||
-- Else use exponential format
|
||||
|
||||
else
|
||||
UI_Image (Val.Num, Format);
|
||||
Scale := UI_From_Int (Int (UI_Image_Length));
|
||||
|
||||
if Format = Decimal then
|
||||
|
||||
-- Write decimal constants with a non-zero unit digit. This
|
||||
-- matches usual scientific notation.
|
||||
|
||||
Write_Char (UI_Image_Buffer (1));
|
||||
Write_Char ('.');
|
||||
|
||||
if UI_Image_Length = 1 then
|
||||
Write_Char ('0');
|
||||
else
|
||||
Write_Str (UI_Image_Buffer (2 .. UI_Image_Length));
|
||||
end if;
|
||||
|
||||
Scale := Scale - 1; -- First digit is at unit position
|
||||
else
|
||||
pragma Assert (Format = Hex);
|
||||
|
||||
-- Write hexadecimal constants with a zero unit digit. This
|
||||
-- matches the Ada canonical form for binary floating point
|
||||
-- numbers, and also ensures that the underscores end up in
|
||||
-- the correct place.
|
||||
|
||||
Write_Str ("0.");
|
||||
Write_Str (UI_Image_Buffer (4 .. UI_Image_Length));
|
||||
Scale := Scale - 4; -- Subtract 16# #
|
||||
Scale := Scale - Scale / 5; -- Subtract underscores;
|
||||
end if;
|
||||
|
||||
Write_Char ('E');
|
||||
Format := Decimal;
|
||||
UI_Write (Scale - Val.Den, Decimal);
|
||||
end if;
|
||||
|
||||
if Format = Hex then
|
||||
Write_Char ('#');
|
||||
end if;
|
||||
end;
|
||||
|
||||
-- Constants in a base other than 10 can still be easily written
|
||||
-- in normal Ada literal style if the numerator is one.
|
||||
|
||||
|
@ -1543,6 +1543,15 @@ package VMS_Data is
|
||||
"-gnatm999999";
|
||||
-- NODOC (see /ERROR_LIMIT)
|
||||
|
||||
S_GCC_Except : aliased constant S := "/EXTRA_EXCEPTION_INFORMATION " &
|
||||
"-gnateE";
|
||||
-- /EXTRA_EXCEPTION_INFORMATION
|
||||
--
|
||||
-- Generate extra information in exception messages, in particular
|
||||
-- display extra column information and the value and range associated
|
||||
-- with index and range check failures, and extra column information for
|
||||
-- access checks.
|
||||
|
||||
S_GCC_Expand : aliased constant S := "/EXPAND_SOURCE " &
|
||||
"-gnatG";
|
||||
-- /NOEXPAND_SOURCE (D)
|
||||
@ -3522,6 +3531,7 @@ package VMS_Data is
|
||||
S_GCC_ErrorX 'Access,
|
||||
S_GCC_Expand 'Access,
|
||||
S_GCC_Lexpand 'Access,
|
||||
S_GCC_Except 'Access,
|
||||
S_GCC_Extend 'Access,
|
||||
S_GCC_Ext 'Access,
|
||||
S_GCC_File 'Access,
|
||||
|
Loading…
x
Reference in New Issue
Block a user