public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [Ada] Fix type mismatch warnings during LTO bootstrap #1
@ 2021-05-07  9:38 Pierre-Marie de Rodat
  0 siblings, 0 replies; only message in thread
From: Pierre-Marie de Rodat @ 2021-05-07  9:38 UTC (permalink / raw)
  To: gcc-patches; +Cc: Eric Botcazou

[-- Attachment #1: Type: text/plain, Size: 614 bytes --]

This sets convention C on enumeration types and functions declarations
involving System.Address, and makes adjustements to fe.h accordingly.

Tested on x86_64-pc-linux-gnu, committed on trunk

gcc/ada/

	* errout.ads (Set_Identifier_Casing): Add pragma Convention C.
	* eval_fat.ads (Rounding_Mode): Likewise.
	(Machine): Add WARNING comment line.
	* exp_code.ads (Clobber_Get_Next): Add pragma Convention C.
	* fe.h (Compiler_Abort): Fix return type.
	(Set_Identifier_Casing): Change type of parameters.
	(Clobber_Get_Next): Change return type.
	* gcc-interface/trans.c (gnat_to_gnu) <N_Code_Statement>: Add cast.

[-- Attachment #2: patch.diff --]
[-- Type: text/x-diff, Size: 3436 bytes --]

diff --git a/gcc/ada/errout.ads b/gcc/ada/errout.ads
--- a/gcc/ada/errout.ads
+++ b/gcc/ada/errout.ads
@@ -987,6 +987,7 @@ package Errout is
    procedure Set_Identifier_Casing
      (Identifier_Name : System.Address;
       File_Name       : System.Address);
+   pragma Convention (C, Set_Identifier_Casing);
    --  This subprogram can be used by the back end for the purposes of
    --  concocting error messages that are not output via Errout, e.g.
    --  the messages generated by the gcc back end.


diff --git a/gcc/ada/eval_fat.ads b/gcc/ada/eval_fat.ads
--- a/gcc/ada/eval_fat.ads
+++ b/gcc/ada/eval_fat.ads
@@ -85,8 +85,8 @@ package Eval_Fat is
 
    type Rounding_Mode is (Floor, Ceiling, Round, Round_Even);
    for Rounding_Mode use (0, 1, 2, 3);
+   pragma Convention (C, Rounding_Mode);
    --  Used to indicate rounding mode for Machine attribute
-   --  Note that C code in gigi knows that Round_Even is 3
 
    --  The Machine attribute is special, in that it takes an extra argument
    --  indicating the rounding mode, and also an argument Enode that is a
@@ -99,6 +99,8 @@ package Eval_Fat is
       Mode  : Rounding_Mode;
       Enode : Node_Id) return T;
 
+   --  WARNING: There is a matching C declaration of this function in urealp.h
+
    procedure Decompose_Int
      (RT       : R;
       X        : T;


diff --git a/gcc/ada/exp_code.ads b/gcc/ada/exp_code.ads
--- a/gcc/ada/exp_code.ads
+++ b/gcc/ada/exp_code.ads
@@ -53,6 +53,7 @@ package Exp_Code is
    --  with subsequent calls to Clobber_Get_Next.
 
    function Clobber_Get_Next return System.Address;
+   pragma Convention (C, Clobber_Get_Next);
    --  Can only be called after a previous call to Clobber_Setup. The
    --  returned value is a pointer to a null terminated (C format) string
    --  for the next register argument. Null_Address is returned when there


diff --git a/gcc/ada/fe.h b/gcc/ada/fe.h
--- a/gcc/ada/fe.h
+++ b/gcc/ada/fe.h
@@ -55,7 +55,7 @@ extern Nat Serious_Errors_Detected;
 
 #define Compiler_Abort		comperr__compiler_abort
 
-extern int Compiler_Abort (String_Pointer, String_Pointer, Boolean) ATTRIBUTE_NORETURN;
+extern void Compiler_Abort (String_Pointer, String_Pointer, Boolean) ATTRIBUTE_NORETURN;
 
 /* debug: */
 
@@ -103,7 +103,7 @@ extern Node_Id Get_Attribute_Definition_Clause (Entity_Id, unsigned char);
 
 extern void Error_Msg_N			(String_Pointer, Node_Id);
 extern void Error_Msg_NE		(String_Pointer, Node_Id, Entity_Id);
-extern void Set_Identifier_Casing	(Char *, const Char *);
+extern void Set_Identifier_Casing	(void *, const void *);
 
 /* err_vars: */
 
@@ -145,7 +145,7 @@ extern Node_Id Asm_Input_Value		(void);
 extern Node_Id Asm_Output_Constraint	(void);
 extern Node_Id Asm_Output_Variable	(void);
 extern Node_Id Asm_Template		(Node_Id);
-extern char *Clobber_Get_Next		(void);
+extern void *Clobber_Get_Next		(void);
 extern void Clobber_Setup		(Node_Id);
 extern Boolean Is_Asm_Volatile		(Node_Id);
 extern void Next_Asm_Input		(void);


diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -7993,7 +7993,7 @@ gnat_to_gnu (Node_Id gnat_node)
 	    }
 
 	  Clobber_Setup (gnat_node);
-	  while ((clobber = Clobber_Get_Next ()))
+	  while ((clobber = (char *) Clobber_Get_Next ()))
 	    gnu_clobbers
 	      = tree_cons (NULL_TREE,
 			   build_string (strlen (clobber) + 1, clobber),



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-05-07  9:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-07  9:38 [Ada] Fix type mismatch warnings during LTO bootstrap #1 Pierre-Marie de Rodat

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).