summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_prag.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-02 12:59:17 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2012-10-02 12:59:17 +0000
commit30f24d1181796b004fe44716bc6ff6ba1ee86f87 (patch)
treebd1180312057b27717b504e3498a14d80f2da58f /gcc/ada/sem_prag.adb
parenta19df2fba314b73db203799b305974b18adc6356 (diff)
downloadgcc-30f24d1181796b004fe44716bc6ff6ba1ee86f87.tar.gz
2012-10-02 Robert Dewar <dewar@adacore.com>
* s-bignum.adb (Big_Exp): 0**0 should be 1, not 0. (Big_Exp): Fix possible error for (-1)**0. (Big_Exp): Fix error in computing 2**K for small K. (Big_Mod): Fix wrong sign for negative operands. (Div_Rem): Fix bad results for operands close to 2**63. * s-bignum.ads: Add documentation and an assertion to require LLI size to be 64 bits. * sem_prag.adb (Analyze_Pragma, case Overflow_Checks): Do not allow ELIMINATED if LLI'Size is other than 64 bits. * switch-c.adb (Scan_Switches): Do not allow -gnato3 if LLI'Size is not 64 bits. * switch.ads (Bad_Switch): Add missing pragma No_Return. * gnat_ugn.texi: Added appendix on Overflow Check Handling in GNAT. 2012-10-02 Robert Dewar <dewar@adacore.com> * sem_type.adb: Minor reformatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@191979 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_prag.adb')
-rw-r--r--gcc/ada/sem_prag.adb14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 7346e02df61..f7e32a50607 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -11773,6 +11773,9 @@ package body Sem_Prag is
-- MODE := SUPPRESSED | CHECKED | MINIMIZED | ELIMINATED
+ -- Note: MINIMIZED is allowed only if Long_Long_Integer'Size is 64
+ -- since System.Bignums makes this assumption.
+
when Pragma_Overflow_Checks => Overflow_Checks : declare
function Get_Check_Mode
(Name : Name_Id;
@@ -11797,12 +11800,21 @@ package body Sem_Prag is
if Chars (Argx) = Name_Suppressed then
return Suppressed;
+
elsif Chars (Argx) = Name_Checked then
return Checked;
+
elsif Chars (Argx) = Name_Minimized then
return Minimized;
+
elsif Chars (Argx) = Name_Eliminated then
- return Eliminated;
+ if Ttypes.Standard_Long_Long_Integer_Size /= 64 then
+ Error_Pragma_Arg
+ ("Eliminated not implemented on this target", Argx);
+ else
+ return Eliminated;
+ end if;
+
else
Error_Pragma_Arg ("invalid argument for pragma%", Argx);
end if;