[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 16 Jul 2014 14:01:46 +0000 (16:01 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 16 Jul 2014 14:01:46 +0000 (16:01 +0200)
2014-07-16  Yannick Moy  <moy@adacore.com>

* sem_attr.adb (Analyze_Attribute/cases Pred
and Succ): Always enable range check on fixed-point types if
not suppressed for the type.

2014-07-16  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_util.adb (State_Has_Enabled_Property):
Account for an external property denoted by an others choice.

From-SVN: r212647

gcc/ada/ChangeLog
gcc/ada/sem_attr.adb
gcc/ada/sem_util.adb

index ab74e4e..e5f0504 100644 (file)
@@ -1,3 +1,14 @@
+2014-07-16  Yannick Moy  <moy@adacore.com>
+
+       * sem_attr.adb (Analyze_Attribute/cases Pred
+       and Succ): Always enable range check on fixed-point types if
+       not suppressed for the type.
+
+2014-07-16  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_util.adb (State_Has_Enabled_Property):
+       Account for an external property denoted by an others choice.
+
 2014-07-16  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * exp_ch4.ads, exp_ch4.adb (Find_Hook_Context): Relocated to Exp_Util.
index 5e5d0d7..bf3c3c7 100644 (file)
@@ -4843,9 +4843,10 @@ package body Sem_Attr is
          Resolve (E1, P_Base_Type);
          Set_Etype (N, P_Base_Type);
 
-         --  For real types, enable range check in Check_Overflow_Mode only
+         --  For floating-point types, enable range check in
+         --  Check_Float_Overflow mode only.
 
-         if Is_Real_Type (P_Type) then
+         if Is_Floating_Point_Type (P_Type) then
             if Check_Float_Overflow
               and then not Range_Checks_Suppressed (P_Base_Type)
             then
@@ -5750,9 +5751,10 @@ package body Sem_Attr is
          Resolve (E1, P_Base_Type);
          Set_Etype (N, P_Base_Type);
 
-         --  For real types, enable range check in Check_Overflow_Mode only
+         --  For floating-point types, enable range check in
+         --  Check_Float_Overflow mode only.
 
-         if Is_Real_Type (P_Type) then
+         if Is_Floating_Point_Type (P_Type) then
             if Check_Float_Overflow
               and then not Range_Checks_Suppressed (P_Base_Type)
             then
index 624687e..7bc8232 100644 (file)
@@ -7430,7 +7430,14 @@ package body Sem_Util is
                   while Present (Prop) loop
                      Prop_Nam := First (Choices (Prop));
 
-                     if Chars (Prop_Nam) = Property then
+                     --  The property can be represented in two ways:
+                     --      others   => <value>
+                     --    <property> => <value>
+
+                     if Nkind (Prop_Nam) = N_Others_Choice
+                       or else (Nkind (Prop_Nam) = N_Identifier
+                                  and then Chars (Prop_Nam) = Property)
+                     then
                         return Is_True (Expr_Value (Expression (Prop)));
                      end if;