[multiple changes]

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
This commit is contained in:
Arnaud Charlet 2014-07-16 16:01:46 +02:00
parent e59243faa1
commit 6cade1b0a0
3 changed files with 25 additions and 5 deletions

View 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.

View 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

View 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;