diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-02 12:59:17 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-10-02 12:59:17 +0000 |
commit | 30f24d1181796b004fe44716bc6ff6ba1ee86f87 (patch) | |
tree | bd1180312057b27717b504e3498a14d80f2da58f /gcc/ada/sem_prag.adb | |
parent | a19df2fba314b73db203799b305974b18adc6356 (diff) | |
download | gcc-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.adb | 14 |
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; |