From: charlet Date: Wed, 16 Jul 2014 14:01:46 +0000 (+0000) Subject: 2014-07-16 Yannick Moy X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8edddf501d19cd29ff23d7ea731c66f3d3a1c8ff;p=thirdparty%2Fgcc.git 2014-07-16 Yannick Moy * 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 * sem_util.adb (State_Has_Enabled_Property): Account for an external property denoted by an others choice. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212647 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ab74e4e4cac9..e5f050458140 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2014-07-16 Yannick Moy + + * 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 + + * sem_util.adb (State_Has_Enabled_Property): + Account for an external property denoted by an others choice. + 2014-07-16 Hristian Kirtchev * exp_ch4.ads, exp_ch4.adb (Find_Hook_Context): Relocated to Exp_Util. diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb index 5e5d0d7b8215..bf3c3c7d9651 100644 --- a/gcc/ada/sem_attr.adb +++ b/gcc/ada/sem_attr.adb @@ -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 diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb index 624687e39b78..7bc82328480f 100644 --- a/gcc/ada/sem_util.adb +++ b/gcc/ada/sem_util.adb @@ -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 => + -- => + + 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;