[Ada] Refactor repeated code for floating point attributes returning reals
authorPiotr Trojanek <trojanek@adacore.com>
Mon, 23 Nov 2020 22:21:19 +0000 (23:21 +0100)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 15 Dec 2020 11:41:50 +0000 (06:41 -0500)
gcc/ada/

* sem_attr.adb (Analyze_Attribute): Merge identical code for
Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las
attributes.

gcc/ada/sem_attr.adb

index d2eb62fed17c4b59d700e724600f3851d4375e04..2e19bf69b41d8c1426aa9a61572a33915ed3bee5 100644 (file)
@@ -4002,7 +4002,12 @@ package body Sem_Attr is
       -- Epsilon --
       -------------
 
-      when Attribute_Epsilon =>
+      when Attribute_Epsilon
+         | Attribute_Model_Epsilon
+         | Attribute_Model_Small
+         | Attribute_Safe_First
+         | Attribute_Safe_Last
+      =>
          Check_Floating_Point_Type_0;
          Set_Etype (N, Universal_Real);
 
@@ -4876,9 +4881,7 @@ package body Sem_Attr is
       -- Model_Epsilon --
       -------------------
 
-      when Attribute_Model_Epsilon =>
-         Check_Floating_Point_Type_0;
-         Set_Etype (N, Universal_Real);
+      --  Shares processing with Epsilon attribute
 
       --------------------
       -- Model_Mantissa --
@@ -4890,9 +4893,7 @@ package body Sem_Attr is
       -- Model_Small --
       -----------------
 
-      when Attribute_Model_Small =>
-         Check_Floating_Point_Type_0;
-         Set_Etype (N, Universal_Real);
+      --  Shares processing with Epsilon attribute
 
       -------------
       -- Modulus --
@@ -5843,9 +5844,7 @@ package body Sem_Attr is
       -- Safe_First --
       ----------------
 
-      when Attribute_Safe_First =>
-         Check_Floating_Point_Type_0;
-         Set_Etype (N, Universal_Real);
+      --  Shares processing with Epsilon attribute
 
       ----------------
       -- Safe_Large --
@@ -5860,9 +5859,7 @@ package body Sem_Attr is
       -- Safe_Last --
       ---------------
 
-      when Attribute_Safe_Last =>
-         Check_Floating_Point_Type_0;
-         Set_Etype (N, Universal_Real);
+      --  Shares processing with Epsilon attribute
 
       ----------------
       -- Safe_Small --