aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/snames.ads-tmpl
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2020-03-03 12:44:18 +0100
committerPierre-Marie de Rodat <derodat@adacore.com>2020-06-09 04:09:06 -0400
commitfd66407104b2133f0e55deb84db787c692a21948 (patch)
tree628e3735093268193368896af1156e6831f4cb18 /gcc/ada/snames.ads-tmpl
parent2d6f6e08e69209d3df5b49b738c08ce3e921bf44 (diff)
downloadgcc-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.ads-tmpl')
-rw-r--r--gcc/ada/snames.ads-tmpl101
1 files changed, 74 insertions, 27 deletions
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index b88f861..0f39a97 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2017, 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- --
@@ -705,6 +705,23 @@ package Snames is
Name_Ada_Pass_By_Copy : constant Name_Id := N + $;
Name_Ada_Pass_By_Reference : constant Name_Id := N + $;
Name_Assembler : constant Name_Id := N + $;
+ Name_C_Variadic_0 : constant Name_Id := N + $;
+ Name_C_Variadic_1 : constant Name_Id := N + $;
+ Name_C_Variadic_2 : constant Name_Id := N + $;
+ Name_C_Variadic_3 : constant Name_Id := N + $;
+ Name_C_Variadic_4 : constant Name_Id := N + $;
+ Name_C_Variadic_5 : constant Name_Id := N + $;
+ Name_C_Variadic_6 : constant Name_Id := N + $;
+ Name_C_Variadic_7 : constant Name_Id := N + $;
+ Name_C_Variadic_8 : constant Name_Id := N + $;
+ Name_C_Variadic_9 : constant Name_Id := N + $;
+ Name_C_Variadic_10 : constant Name_Id := N + $;
+ Name_C_Variadic_11 : constant Name_Id := N + $;
+ Name_C_Variadic_12 : constant Name_Id := N + $;
+ Name_C_Variadic_13 : constant Name_Id := N + $;
+ Name_C_Variadic_14 : constant Name_Id := N + $;
+ Name_C_Variadic_15 : constant Name_Id := N + $;
+ Name_C_Variadic_16 : constant Name_Id := N + $;
Name_COBOL : constant Name_Id := N + $;
Name_CPP : constant Name_Id := N + $;
Name_Fortran : constant Name_Id := N + $;
@@ -713,6 +730,9 @@ package Snames is
Name_Stubbed : constant Name_Id := N + $;
Last_Convention_Name : constant Name_Id := N + $;
+ subtype Name_C_Variadic is Name_Id
+ range Name_C_Variadic_0 .. Name_C_Variadic_16;
+
-- The following names are preset as synonyms for Assembler
Name_Asm : constant Name_Id := N + $;
@@ -1166,14 +1186,14 @@ package Snames is
Name_Unsigned_32 : constant Name_Id := N + $; -- GNAT
Name_Unsigned_64 : constant Name_Id := N + $; -- GNAT
- subtype Scalar_Id is Name_Id range
- Name_Short_Float .. Name_Unsigned_64;
+ subtype Scalar_Id is Name_Id
+ range Name_Short_Float .. Name_Unsigned_64;
- subtype Float_Scalar_Id is Name_Id range
- Name_Short_Float .. Name_Long_Long_Float;
+ subtype Float_Scalar_Id is Name_Id
+ range Name_Short_Float .. Name_Long_Long_Float;
- subtype Integer_Scalar_Id is Name_Id range
- Name_Signed_8 .. Name_Unsigned_64;
+ subtype Integer_Scalar_Id is Name_Id
+ range Name_Signed_8 .. Name_Unsigned_64;
-- Names of recognized checks for pragma Suppress
@@ -1314,8 +1334,8 @@ package Snames is
Name_Tagged : constant Name_Id := N + $;
Last_95_Reserved_Word : constant Name_Id := N + $;
- subtype Ada_95_Reserved_Words is
- Name_Id range First_95_Reserved_Word .. Last_95_Reserved_Word;
+ subtype Ada_95_Reserved_Words is Name_Id
+ range First_95_Reserved_Word .. Last_95_Reserved_Word;
-- Miscellaneous names used in semantic checking
@@ -1526,8 +1546,8 @@ package Snames is
Name_Synchronized : constant Name_Id := N + $;
Last_2005_Reserved_Word : constant Name_Id := N + $;
- subtype Ada_2005_Reserved_Words is
- Name_Id range First_2005_Reserved_Word .. Last_2005_Reserved_Word;
+ subtype Ada_2005_Reserved_Words is Name_Id
+ range First_2005_Reserved_Word .. Last_2005_Reserved_Word;
-- Ada 2012 reserved words
@@ -1535,8 +1555,8 @@ package Snames is
Name_Some : constant Name_Id := N + $;
Last_2012_Reserved_Word : constant Name_Id := N + $;
- subtype Ada_2012_Reserved_Words is
- Name_Id range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
+ subtype Ada_2012_Reserved_Words is Name_Id
+ range First_2012_Reserved_Word .. Last_2012_Reserved_Word;
-- Mark last defined name for consistency check in Snames body
@@ -1546,11 +1566,11 @@ package Snames is
-- Subtypes Defining Name Categories --
---------------------------------------
- subtype Any_Operator_Name is Name_Id range
- First_Operator_Name .. Last_Operator_Name;
+ subtype Any_Operator_Name is Name_Id
+ range First_Operator_Name .. Last_Operator_Name;
- subtype Configuration_Pragma_Names is Name_Id range
- First_Pragma_Name .. Last_Configuration_Pragma_Name;
+ subtype Configuration_Pragma_Names is Name_Id
+ range First_Pragma_Name .. Last_Configuration_Pragma_Name;
------------------------------
-- Attribute ID Definitions --
@@ -1755,8 +1775,8 @@ package Snames is
Attribute_Dispatching_Domain,
Attribute_Interrupt_Priority);
- subtype Internal_Attribute_Id is Attribute_Id range
- Attribute_CPU .. Attribute_Interrupt_Priority;
+ subtype Internal_Attribute_Id is Attribute_Id
+ range Attribute_CPU .. Attribute_Interrupt_Priority;
type Attribute_Class_Array is array (Attribute_Id) of Boolean;
-- Type used to build attribute classification flag arrays
@@ -1784,12 +1804,29 @@ package Snames is
-- The remaining conventions are foreign language conventions
- Convention_Assembler, -- also Asm, Assembly
- Convention_C, -- also Default, External
- Convention_COBOL,
+ Convention_Assembler, -- also Asm, Assembly
+ Convention_C, -- also Default, External
+ Convention_C_Variadic_0,
+ Convention_C_Variadic_1,
+ Convention_C_Variadic_2,
+ Convention_C_Variadic_3,
+ Convention_C_Variadic_4,
+ Convention_C_Variadic_5,
+ Convention_C_Variadic_6,
+ Convention_C_Variadic_7,
+ Convention_C_Variadic_8,
+ Convention_C_Variadic_9,
+ Convention_C_Variadic_10,
+ Convention_C_Variadic_11,
+ Convention_C_Variadic_12,
+ Convention_C_Variadic_13,
+ Convention_C_Variadic_14,
+ Convention_C_Variadic_15,
+ Convention_C_Variadic_16,
Convention_CPP,
+ Convention_COBOL,
Convention_Fortran,
- Convention_Stdcall); -- also DLL, Win32
+ Convention_Stdcall); -- also DLL, Win32
-- Note: Convention C_Pass_By_Copy is allowed only for record types
-- (where it is treated like C except that the appropriate flag is set
@@ -1799,8 +1836,14 @@ package Snames is
for Convention_Id'Size use 8;
-- Plenty of space for expansion
- subtype Foreign_Convention is
- Convention_Id range Convention_Assembler .. Convention_Id'Last;
+ subtype Convention_C_Family is Convention_Id
+ range Convention_C .. Convention_CPP;
+
+ subtype Convention_C_Variadic is Convention_Id
+ range Convention_C_Variadic_0 .. Convention_C_Variadic_16;
+
+ subtype Foreign_Convention is Convention_Id
+ range Convention_Assembler .. Convention_Stdcall;
-----------------------------------
-- Locking Policy ID Definitions --
@@ -2226,13 +2269,17 @@ package Snames is
private
pragma Inline (Is_Attribute_Name);
+ pragma Inline (Is_Configuration_Pragma_Name);
pragma Inline (Is_Entity_Attribute_Name);
- pragma Inline (Is_Type_Attribute_Name);
+ pragma Inline (Is_Function_Attribute_Name);
+ pragma Inline (Is_Internal_Attribute_Name);
pragma Inline (Is_Locking_Policy_Name);
pragma Inline (Is_Partition_Elaboration_Policy_Name);
pragma Inline (Is_Operator_Symbol_Name);
- pragma Inline (Is_Queuing_Policy_Name);
pragma Inline (Is_Pragma_Name);
+ pragma Inline (Is_Procedure_Attribute_Name);
+ pragma Inline (Is_Queuing_Policy_Name);
pragma Inline (Is_Task_Dispatching_Policy_Name);
+ pragma Inline (Is_Type_Attribute_Name);
end Snames;