diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-09 19:27:53 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-07-09 19:27:53 +0000 |
commit | 6234cc4e6acae7fa1281205486aca043479680ba (patch) | |
tree | 5a82c06ace3a508f8ce6564a35273771ba7e1f4a /gcc/ada/exp_attr.adb | |
parent | 6cefca87057fc5e159a5d47c43ad190fa1a8cb43 (diff) | |
download | gcc-6234cc4e6acae7fa1281205486aca043479680ba.tar.gz |
2009-07-09 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 149427
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@149430 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/exp_attr.adb')
-rw-r--r-- | gcc/ada/exp_attr.adb | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index 897b9e1a87d..c22598582ca 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -3388,10 +3388,13 @@ package body Exp_Attr is elsif Is_Modular_Integer_Type (Ptyp) then null; - -- For other types, if range checking is enabled, we must generate - -- a check if overflow checking is enabled. + -- For other types, if argument is marked as needing a range check or + -- overflow checking is enabled, we must generate a check. - elsif not Overflow_Checks_Suppressed (Ptyp) then + elsif not Overflow_Checks_Suppressed (Ptyp) + or else Do_Range_Check (First (Exprs)) + then + Set_Do_Range_Check (First (Exprs), False); Expand_Pred_Succ (N); end if; end Pred; @@ -4319,10 +4322,13 @@ package body Exp_Attr is elsif Is_Modular_Integer_Type (Ptyp) then null; - -- For other types, if range checking is enabled, we must generate - -- a check if overflow checking is enabled. + -- For other types, if argument is marked as needing a range check or + -- overflow checking is enabled, we must generate a check. - elsif not Overflow_Checks_Suppressed (Ptyp) then + elsif not Overflow_Checks_Suppressed (Ptyp) + or else Do_Range_Check (First (Exprs)) + then + Set_Do_Range_Check (First (Exprs), False); Expand_Pred_Succ (N); end if; end Succ; @@ -4629,6 +4635,13 @@ package body Exp_Attr is end if; Analyze_And_Resolve (N, Typ); + + -- If the argument is marked as requiring a range check then generate + -- it here. + + elsif Do_Range_Check (First (Exprs)) then + Set_Do_Range_Check (First (Exprs), False); + Generate_Range_Check (First (Exprs), Etyp, CE_Range_Check_Failed); end if; end Val; |