diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2020-03-03 12:44:18 +0100 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-06-09 04:09:06 -0400 |
commit | fd66407104b2133f0e55deb84db787c692a21948 (patch) | |
tree | 628e3735093268193368896af1156e6831f4cb18 /gcc/ada/snames.adb-tmpl | |
parent | 2d6f6e08e69209d3df5b49b738c08ce3e921bf44 (diff) | |
download | gcc-fd66407104b2133f0e55deb84db787c692a21948.zip gcc-fd66407104b2133f0e55deb84db787c692a21948.tar.gz gcc-fd66407104b2133f0e55deb84db787c692a21948.tar.bz2 |
[Ada] Implement AI12-0028: Import of variadic C functions
2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
gcc/ada/
* exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
* freeze.adb (Freeze_Profile): Likewise. Add missing guard.
* sem_mech.adb (Set_Mechanisms): Likewise.
* lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
* repinfo.adb (List_Subprogram_Info): Likewise.
* sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
Stdcall to...
(Process_Convention): ...here. Add checks for C_Variadic.
* snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
Use consistent format for subtype declarations.
(Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
and move Convention_CPP up.
(Convention_C_Family): New subtype of Convention_Id.
(Convention_C_Variadic): Likewise.
(Foreign_Convention): Use explicit upper bound.
Add pragma Inline for Is_Configuration_Pragma_Name,
Is_Function_Attribute_Name, Is_Internal_Attribute_Name
and Is_Procedure_Attribute_Name.
* snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
(Get_Convention_Name): Deal with Convention_Variadic_n.
* types.h (Convention_Id): New typedef.
* xsnamest.adb (Name2): New variable.
(Is_Conv): New pattern.
(Get_Subt1): Likewise.
(Get_Subt2): Likewise.
Output subtypes of Convention_Id into the C header file.
Diffstat (limited to 'gcc/ada/snames.adb-tmpl')
-rw-r--r-- | gcc/ada/snames.adb-tmpl | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/gcc/ada/snames.adb-tmpl b/gcc/ada/snames.adb-tmpl index a03cafb..ce9c63d 100644 --- a/gcc/ada/snames.adb-tmpl +++ b/gcc/ada/snames.adb-tmpl @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1992-2016, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2020, Free Software Foundation, Inc. -- -- -- -- GNAT is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- @@ -155,6 +155,23 @@ package body Snames is Convention_Ada_Pass_By_Reference; when Name_Assembler => return Convention_Assembler; when Name_C => return Convention_C; + when Name_C_Variadic_0 => return Convention_C_Variadic_0; + when Name_C_Variadic_1 => return Convention_C_Variadic_1; + when Name_C_Variadic_2 => return Convention_C_Variadic_2; + when Name_C_Variadic_3 => return Convention_C_Variadic_3; + when Name_C_Variadic_4 => return Convention_C_Variadic_4; + when Name_C_Variadic_5 => return Convention_C_Variadic_5; + when Name_C_Variadic_6 => return Convention_C_Variadic_6; + when Name_C_Variadic_7 => return Convention_C_Variadic_7; + when Name_C_Variadic_8 => return Convention_C_Variadic_8; + when Name_C_Variadic_9 => return Convention_C_Variadic_9; + when Name_C_Variadic_10 => return Convention_C_Variadic_10; + when Name_C_Variadic_11 => return Convention_C_Variadic_11; + when Name_C_Variadic_12 => return Convention_C_Variadic_12; + when Name_C_Variadic_13 => return Convention_C_Variadic_13; + when Name_C_Variadic_14 => return Convention_C_Variadic_14; + when Name_C_Variadic_15 => return Convention_C_Variadic_15; + when Name_C_Variadic_16 => return Convention_C_Variadic_16; when Name_COBOL => return Convention_COBOL; when Name_CPP => return Convention_CPP; when Name_Fortran => return Convention_Fortran; @@ -189,6 +206,23 @@ package body Snames is return Name_Ada_Pass_By_Reference; when Convention_Assembler => return Name_Assembler; when Convention_C => return Name_C; + when Convention_C_Variadic_0 => return Name_C_Variadic_0; + when Convention_C_Variadic_1 => return Name_C_Variadic_1; + when Convention_C_Variadic_2 => return Name_C_Variadic_2; + when Convention_C_Variadic_3 => return Name_C_Variadic_3; + when Convention_C_Variadic_4 => return Name_C_Variadic_4; + when Convention_C_Variadic_5 => return Name_C_Variadic_5; + when Convention_C_Variadic_6 => return Name_C_Variadic_6; + when Convention_C_Variadic_7 => return Name_C_Variadic_7; + when Convention_C_Variadic_8 => return Name_C_Variadic_8; + when Convention_C_Variadic_9 => return Name_C_Variadic_9; + when Convention_C_Variadic_10 => return Name_C_Variadic_10; + when Convention_C_Variadic_11 => return Name_C_Variadic_11; + when Convention_C_Variadic_12 => return Name_C_Variadic_12; + when Convention_C_Variadic_13 => return Name_C_Variadic_13; + when Convention_C_Variadic_14 => return Name_C_Variadic_14; + when Convention_C_Variadic_15 => return Name_C_Variadic_15; + when Convention_C_Variadic_16 => return Name_C_Variadic_16; when Convention_COBOL => return Name_COBOL; when Convention_CPP => return Name_CPP; when Convention_Entry => return Name_Entry; @@ -425,9 +459,9 @@ package body Snames is return N in First_Locking_Policy_Name .. Last_Locking_Policy_Name; end Is_Locking_Policy_Name; - ------------------------------------- - -- Is_Partition_Elaboration_Policy -- - ------------------------------------- + ------------------------------------------ + -- Is_Partition_Elaboration_Policy_Name -- + ------------------------------------------ function Is_Partition_Elaboration_Policy_Name (N : Name_Id) return Boolean |