Preliminary work on support for 128bits integers
authorArnaud Charlet <charlet@adacore.com>
Thu, 3 Sep 2020 08:34:48 +0000 (04:34 -0400)
committerArnaud Charlet <charlet@adacore.com>
Thu, 3 Sep 2020 08:34:48 +0000 (04:34 -0400)
* fe.h, opt.ads (Enable_128bit_Types): New.
* stand.ads (Standard_Long_Long_Long_Integer,
S_Long_Long_Long_Integer): New.

gcc/ada/fe.h
gcc/ada/opt.ads
gcc/ada/stand.ads

index 8ad16c2b1c91acb082662328fd2f75c633ad8bac..520301e4c3e9a05875b92161c5bf793ae214fb8f 100644 (file)
@@ -192,6 +192,7 @@ extern Boolean In_Extended_Main_Code_Unit   (Entity_Id);
 #define Ada_Version                    opt__ada_version
 #define Back_End_Inlining              opt__back_end_inlining
 #define Debug_Generated_Code           opt__debug_generated_code
+#define Enable_128bit_Types            opt__enable_128bit_types
 #define Exception_Extra_Info           opt__exception_extra_info
 #define Exception_Locations_Suppressed opt__exception_locations_suppressed
 #define Exception_Mechanism            opt__exception_mechanism
index c982f83b9e4a785a2dc16c68d4a5b44550e04e32..885a6fb9497d4773a7d5bf55004a1c2a5f764c35 100644 (file)
@@ -525,6 +525,13 @@ package Opt is
    --  dataflow analysis, which is not available. This behavior parallels that
    --  of the old ABE mechanism.
 
+   Enable_128bit_Types : Boolean := False;
+   --  GNAT
+   --  Set to True to enable the support for 128-bit types in the compiler.
+   --  The prerequisite is a 64-bit target that supports 128-bit computation.
+
+   --  WARNING: There is a matching C declaration of this variable in fe.h
+
    Error_Msg_Line_Length : Nat := 0;
    --  GNAT
    --  Records the error message line length limit. If this is set to zero,
index f3f7eb512d5b5c1f29169bbb12a5a6f50c763d68..57b4d55387ef926db7d66328040230611c5c8674 100644 (file)
@@ -61,6 +61,7 @@ package Stand is
       S_Integer,
       S_Long_Integer,
       S_Long_Long_Integer,
+      S_Long_Long_Long_Integer,
 
       S_Natural,
       S_Positive,
@@ -283,6 +284,9 @@ package Stand is
    Standard_Long_Integer        : Entity_Id renames SE (S_Long_Integer);
    Standard_Long_Long_Integer   : Entity_Id renames SE (S_Long_Long_Integer);
 
+   Standard_Long_Long_Long_Integer : Entity_Id renames
+                                                 SE (S_Long_Long_Long_Integer);
+
    Standard_Op_Add              : Entity_Id renames SE (S_Op_Add);
    Standard_Op_And              : Entity_Id renames SE (S_Op_And);
    Standard_Op_Concat           : Entity_Id renames SE (S_Op_Concat);