aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/libgnat
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2021-04-09 13:29:44 +0200
committerPierre-Marie de Rodat <derodat@adacore.com>2021-06-29 14:23:46 +0000
commit1a9d13fff60c845a258d1e6607d42290db45e5e7 (patch)
treee8234d8f2e9799d6c062ee95f52a5eb605db3870 /gcc/ada/libgnat
parentb9ec951f4318f1ed8d8c8d5477eeb534ad0811ae (diff)
downloadgcc-1a9d13fff60c845a258d1e6607d42290db45e5e7.zip
gcc-1a9d13fff60c845a258d1e6607d42290db45e5e7.tar.gz
gcc-1a9d13fff60c845a258d1e6607d42290db45e5e7.tar.bz2
[Ada] Further adjustment and optimization of System.Value_N
gcc/ada/ * rtsfind.ads (RE_Id): Change RE_Valid_Enumeration_Value_NN into RE_Valid_Value_Enumeration_NN. (RE_Unit_Table): Adjust to above renaming. * exp_imgv.adb (Expand_Valid_Value_Attribute): Likewise. * libgnat/s-valuen.ads (Invalid): Remove. (Value_Enumeration_Pos): Move to... * libgnat/s-valuen.adb (Value_Enumeration_Pos): ...here. Return -1 instead of Invalid. (Value_Enumeration): Compare against 0 instead of Invalid. (Valid_Enumeration_Value): Likewise. Rename to... (Valid_Value_Enumeration): ...this. * libgnat/s-vaenu8.ads (Valid_Enumeration_Value_8): Rename into... (Valid_Value_Enumeration_8): ...this. * libgnat/s-vaen16.ads (Valid_Enumeration_Value_16): Rename into... (Valid_Value_Enumeration_16): ...this. * libgnat/s-vaen32.ads (Valid_Enumeration_Value_32): Rename into... (Valid_Value_Enumeration_32): ...this.
Diffstat (limited to 'gcc/ada/libgnat')
-rw-r--r--gcc/ada/libgnat/s-vaen16.ads4
-rw-r--r--gcc/ada/libgnat/s-vaen32.ads4
-rw-r--r--gcc/ada/libgnat/s-vaenu8.ads4
-rw-r--r--gcc/ada/libgnat/s-valuen.adb49
-rw-r--r--gcc/ada/libgnat/s-valuen.ads14
5 files changed, 38 insertions, 37 deletions
diff --git a/gcc/ada/libgnat/s-vaen16.ads b/gcc/ada/libgnat/s-vaen16.ads
index 86cdaa1..6ea6071 100644
--- a/gcc/ada/libgnat/s-vaen16.ads
+++ b/gcc/ada/libgnat/s-vaen16.ads
@@ -49,13 +49,13 @@ package System.Val_Enum_16 is
return Natural
renames Impl.Value_Enumeration;
- function Valid_Enumeration_Value_16
+ function Valid_Value_Enumeration_16
(Names : String;
Indexes : System.Address;
Hash : Impl.Hash_Function_Ptr;
Num : Natural;
Str : String)
return Boolean
- renames Impl.Valid_Enumeration_Value;
+ renames Impl.Valid_Value_Enumeration;
end System.Val_Enum_16;
diff --git a/gcc/ada/libgnat/s-vaen32.ads b/gcc/ada/libgnat/s-vaen32.ads
index 0dead07..e1a7644 100644
--- a/gcc/ada/libgnat/s-vaen32.ads
+++ b/gcc/ada/libgnat/s-vaen32.ads
@@ -49,13 +49,13 @@ package System.Val_Enum_32 is
return Natural
renames Impl.Value_Enumeration;
- function Valid_Enumeration_Value_32
+ function Valid_Value_Enumeration_32
(Names : String;
Indexes : System.Address;
Hash : Impl.Hash_Function_Ptr;
Num : Natural;
Str : String)
return Boolean
- renames Impl.Valid_Enumeration_Value;
+ renames Impl.Valid_Value_Enumeration;
end System.Val_Enum_32;
diff --git a/gcc/ada/libgnat/s-vaenu8.ads b/gcc/ada/libgnat/s-vaenu8.ads
index db0b360..395a969 100644
--- a/gcc/ada/libgnat/s-vaenu8.ads
+++ b/gcc/ada/libgnat/s-vaenu8.ads
@@ -49,13 +49,13 @@ package System.Val_Enum_8 is
return Natural
renames Impl.Value_Enumeration;
- function Valid_Enumeration_Value_8
+ function Valid_Value_Enumeration_8
(Names : String;
Indexes : System.Address;
Hash : Impl.Hash_Function_Ptr;
Num : Natural;
Str : String)
return Boolean
- renames Impl.Valid_Enumeration_Value;
+ renames Impl.Valid_Value_Enumeration;
end System.Val_Enum_8;
diff --git a/gcc/ada/libgnat/s-valuen.adb b/gcc/ada/libgnat/s-valuen.adb
index 7b72bc6..ef613a2 100644
--- a/gcc/ada/libgnat/s-valuen.adb
+++ b/gcc/ada/libgnat/s-valuen.adb
@@ -35,6 +35,16 @@ with System.Val_Util; use System.Val_Util;
package body System.Value_N is
+ function Value_Enumeration_Pos
+ (Names : String;
+ Indexes : System.Address;
+ Hash : Hash_Function_Ptr;
+ Num : Natural;
+ Str : String)
+ return Integer with Pure_Function;
+ -- Same as Value_Enumeration, except returns negative if Value_Enumeration
+ -- would raise Constraint_Error.
+
---------------------------
-- Value_Enumeration_Pos --
---------------------------
@@ -98,9 +108,25 @@ package body System.Value_N is
end if;
end;
- return Invalid;
+ return -1;
end Value_Enumeration_Pos;
+ -----------------------------
+ -- Valid_Value_Enumeration --
+ -----------------------------
+
+ function Valid_Value_Enumeration
+ (Names : String;
+ Indexes : System.Address;
+ Hash : Hash_Function_Ptr;
+ Num : Natural;
+ Str : String)
+ return Boolean
+ is
+ begin
+ return Value_Enumeration_Pos (Names, Indexes, Hash, Num, Str) >= 0;
+ end Valid_Value_Enumeration;
+
-----------------------
-- Value_Enumeration --
-----------------------
@@ -115,28 +141,15 @@ package body System.Value_N is
is
Result : constant Integer :=
Value_Enumeration_Pos (Names, Indexes, Hash, Num, Str);
+
begin
- if Result = Invalid then
+ -- The comparison eliminates the need for a range check on return
+
+ if Result < 0 then
Bad_Value (Str);
else
return Result;
end if;
end Value_Enumeration;
- -----------------------------
- -- Valid_Enumeration_Value --
- -----------------------------
-
- function Valid_Enumeration_Value
- (Names : String;
- Indexes : System.Address;
- Hash : Hash_Function_Ptr;
- Num : Natural;
- Str : String)
- return Boolean
- is
- begin
- return Value_Enumeration_Pos (Names, Indexes, Hash, Num, Str) /= Invalid;
- end Valid_Enumeration_Value;
-
end System.Value_N;
diff --git a/gcc/ada/libgnat/s-valuen.ads b/gcc/ada/libgnat/s-valuen.ads
index 7ef0539..db8ad1d 100644
--- a/gcc/ada/libgnat/s-valuen.ads
+++ b/gcc/ada/libgnat/s-valuen.ads
@@ -67,7 +67,7 @@ package System.Value_N is
-- If the image is found in Names, then the corresponding Pos value is
-- returned. If not, Constraint_Error is raised.
- function Valid_Enumeration_Value
+ function Valid_Value_Enumeration
(Names : String;
Indexes : System.Address;
Hash : Hash_Function_Ptr;
@@ -79,16 +79,4 @@ package System.Value_N is
-- raise Constraint_Error. The parameters have the same meaning as for
-- Value_Enumeration.
- Invalid : constant Integer := -1;
-
- function Value_Enumeration_Pos
- (Names : String;
- Indexes : System.Address;
- Hash : Hash_Function_Ptr;
- Num : Natural;
- Str : String)
- return Integer with Pure_Function;
- -- Same as Value_Enumeration, except returns Invalid if Value_Enumeration
- -- would raise Constraint_Error.
-
end System.Value_N;