OSDN Git Service

2009-07-23 Olivier Hainque <hainque@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 09:17:56 +0000 (09:17 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 23 Jul 2009 09:17:56 +0000 (09:17 +0000)
* gnat_rm.texi: Document the GNAT.SSE units.

2009-07-23  Ed Schonberg  <schonberg@adacore.com>

* sem_ch6.adb (Analyze_Return_Type): Do not create itype reference for
not null return if it appears on a subunit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149979 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/gnat_rm.texi
gcc/ada/sem_ch6.adb

index b9d9baf..2451727 100644 (file)
@@ -1,3 +1,12 @@
+2009-07-23  Olivier Hainque  <hainque@adacore.com>
+
+       * gnat_rm.texi: Document the GNAT.SSE units.
+
+2009-07-23  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch6.adb (Analyze_Return_Type): Do not create itype reference for
+       not null return if it appears on a subunit.
+
 2009-07-23  Robert Dewar  <dewar@adacore.com>
 
        * exp_ch5.adb (Expand_N_Assignment_Statement): Do left-side validity
index a17d454..1f26563 100644 (file)
@@ -381,6 +381,8 @@ The GNAT Library
 * GNAT.Spitbol.Table_Boolean (g-sptabo.ads)::
 * GNAT.Spitbol.Table_Integer (g-sptain.ads)::
 * GNAT.Spitbol.Table_VString (g-sptavs.ads)::
+* GNAT.SSE (g-sse.ads)::
+* GNAT.SSE.Vector_Types (g-ssvety.ads)::
 * GNAT.Strings (g-string.ads)::
 * GNAT.String_Split (g-strspl.ads)::
 * GNAT.Table (g-table.ads)::
@@ -13568,6 +13570,8 @@ of GNAT, and will generate a warning message.
 * GNAT.Spitbol.Table_Boolean (g-sptabo.ads)::
 * GNAT.Spitbol.Table_Integer (g-sptain.ads)::
 * GNAT.Spitbol.Table_VString (g-sptavs.ads)::
+* GNAT.SSE (g-sse.ads)::
+* GNAT.SSE.Vector_Types (g-ssvety.ads)::
 * GNAT.Strings (g-string.ads)::
 * GNAT.String_Split (g-strspl.ads)::
 * GNAT.Table (g-table.ads)::
@@ -14627,6 +14631,23 @@ A library level of instantiation of @code{GNAT.Spitbol.Patterns.Table} for
 a variable length string type, giving an implementation of general
 maps from strings to strings.
 
+@node GNAT.SSE (g-sse.ads)
+@section @code{GNAT.SSE} (@file{g-sse.ads})
+@cindex @code{GNAT.SSE} (@file{g-sse.ads})
+
+@noindent
+Root of a set of units aimed at offering Ada bindings to a subset of
+the Intel(r) Streaming SIMD Extensions with GNAT on the x86 family of
+targets.  It exposes vector component types together with a general
+introduction to the binding contents and use.
+
+@node GNAT.SSE.Vector_Types (g-ssvety.ads)
+@section @code{GNAT.SSE.Vector_Types} (@file{g-ssvety.ads})
+@cindex @code{GNAT.SSE.Vector_Types} (@file{g-ssvety.ads})
+
+@noindent
+SSE vector types for use with SSE related intrinsics.
+
 @node GNAT.Strings (g-string.ads)
 @section @code{GNAT.Strings} (@file{g-string.ads})
 @cindex @code{GNAT.Strings} (@file{g-string.ads})
index 2b32568..7d4bcd1 100644 (file)
@@ -592,10 +592,10 @@ package body Sem_Ch6 is
 
          elsif Covers (Base_Type (R_Type), Base_Type (R_Stm_Type))
            or else (Is_Underlying_Record_View (Base_Type (R_Stm_Type))
-                      and then
-                        Covers
-                          (Base_Type (R_Type),
-                           Underlying_Record_View (Base_Type (R_Stm_Type))))
+                     and then
+                       Covers
+                         (Base_Type (R_Type),
+                          Underlying_Record_View (Base_Type (R_Stm_Type))))
          then
             --  A null exclusion may be present on the return type, on the
             --  function specification, on the object declaration or on the
@@ -1317,16 +1317,23 @@ package body Sem_Ch6 is
                --  force elaboration must be attached to the freezing of
                --  the base type.
 
+               --  If the return specification appears on a proper body,
+               --  the subtype will have been created already on the spec.
+
                if Is_Frozen (Typ) then
-                  Build_Itype_Reference
-                    (Etype (Designator), Parent (N));
+                  if Nkind (Parent (N)) = N_Subprogram_Body
+                    and then Nkind (Parent (Parent (N))) = N_Subunit
+                  then
+                     null;
+                  else
+                     Build_Itype_Reference (Etype (Designator), Parent (N));
+                  end if;
+
                else
                   Ensure_Freeze_Node (Typ);
 
                   declare
-                     IR : constant Node_Id :=
-                             Make_Itype_Reference (Sloc (N));
-
+                     IR : constant Node_Id := Make_Itype_Reference (Sloc (N));
                   begin
                      Set_Itype (IR, Etype (Designator));
                      Append_Freeze_Actions (Typ, New_List (IR));