diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2019-12-16 10:34:12 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2019-12-16 10:34:12 +0000 |
commit | 2f31b36248da8d0a895f2535d9c5e251b5e4595e (patch) | |
tree | 0b5e08c9819c91d5aa9a8222d59a36290a09ca72 /gcc | |
parent | ba58b776c08cf4c1a7021e60f9ec1f70a8141b1e (diff) | |
download | gcc-2f31b36248da8d0a895f2535d9c5e251b5e4595e.zip gcc-2f31b36248da8d0a895f2535d9c5e251b5e4595e.tar.gz gcc-2f31b36248da8d0a895f2535d9c5e251b5e4595e.tar.bz2 |
[Ada] Export the Ada version through the C interface
2019-12-16 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* fe.h (Ada_Version_Type): New typedef.
(Ada_Version): Declare.
* opt.ads (Ada_Version_Type): Add Convention C and WARNING line.
(Ada_Version): Add WARNING line.
(Exception_Mechanism_Type): Likewise.
From-SVN: r279426
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/fe.h | 8 | ||||
-rw-r--r-- | gcc/ada/opt.ads | 8 |
3 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 4af1acd..2ef94ce 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2019-12-16 Eric Botcazou <ebotcazou@adacore.com> + + * fe.h (Ada_Version_Type): New typedef. + (Ada_Version): Declare. + * opt.ads (Ada_Version_Type): Add Convention C and WARNING line. + (Ada_Version): Add WARNING line. + (Exception_Mechanism_Type): Likewise. + 2019-12-16 Gary Dismukes <dismukes@adacore.com> * checks.adb, sem_util.adb: Minor reformatting and U.S. spelling diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h index 74eb2ad..6b3f300 100644 --- a/gcc/ada/fe.h +++ b/gcc/ada/fe.h @@ -36,7 +36,7 @@ "WARNING: There is a matching C declaration of this <entity_kind> in fe.h" - where <entity_kind> is either "subprogram" or "variable". + where <entity_kind> is either "subprogram" or "variable" or "type". WARNING: functions taking String_Pointer parameters must abide by the rule documented alongside the definition of String_Pointer in types.h. */ @@ -187,6 +187,7 @@ extern Boolean In_Extended_Main_Code_Unit (Entity_Id); /* opt: */ +#define Ada_Version opt__ada_version #define Back_End_Inlining opt__back_end_inlining #define Debug_Generated_Code opt__debug_generated_code #define Exception_Extra_Info opt__exception_extra_info @@ -199,9 +200,14 @@ extern Boolean In_Extended_Main_Code_Unit (Entity_Id); #define Suppress_Checks opt__suppress_checks typedef enum { + Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2020 +} Ada_Version_Type; + +typedef enum { Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ } Exception_Mechanism_Type; +extern Ada_Version_Type Ada_Version; extern Boolean Back_End_Inlining; extern Boolean Debug_Generated_Code; extern Boolean Exception_Extra_Info; diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads index fcfafc4..291fae8 100644 --- a/gcc/ada/opt.ads +++ b/gcc/ada/opt.ads @@ -124,11 +124,14 @@ package Opt is type Ada_Version_Type is (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2020); pragma Ordered (Ada_Version_Type); + pragma Convention (C, Ada_Version_Type); -- Versions of Ada for Ada_Version below. Note that these are ordered, -- so that tests like Ada_Version >= Ada_95 are legitimate and useful. -- Think twice before using "="; Ada_Version >= Ada_2012 is more likely -- what you want, because it will apply to future versions of the language. + -- WARNING: There is a matching C declaration of this type in fe.h + Ada_Version_Default : constant Ada_Version_Type := Ada_2012; pragma Warnings (Off, Ada_Version_Default); -- GNAT @@ -141,6 +144,8 @@ package Opt is -- compiler switches, or implicitly (to Ada_Version_Runtime) when a -- predefined or internal file is compiled. + -- WARNING: There is a matching C declaration of this variable in fe.h + Ada_Version_Pragma : Node_Id := Empty; -- Reflects the Ada_xxx pragma that resulted in setting Ada_Version. Used -- to specialize error messages complaining about the Ada version in use. @@ -629,9 +634,10 @@ package Opt is -- Similar to Back_End_ZCX with respect to the front-end processing -- of regular and AT-END handlers. A setjmp/longjmp scheme is used to -- propagate and setup handler contexts on regular execution paths. - pragma Convention (C, Exception_Mechanism_Type); + -- WARNING: There is a matching C declaration of this type in fe.h + Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ; -- GNAT -- Set to the appropriate value depending on the flags in system.ads |