diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-07-23 11:17:56 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-07-23 11:17:56 +0200 |
commit | 212863c0676464d2e3ede50b6e04556b3b88257e (patch) | |
tree | 7aacfef1a126574402faee123141f699f8cb4a61 /gcc/ada | |
parent | 97cb64f052a76046aaf4d3290ef5ceb744f3e779 (diff) | |
download | gcc-212863c0676464d2e3ede50b6e04556b3b88257e.zip gcc-212863c0676464d2e3ede50b6e04556b3b88257e.tar.gz gcc-212863c0676464d2e3ede50b6e04556b3b88257e.tar.bz2 |
[multiple changes]
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.
From-SVN: r149979
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ada/gnat_rm.texi | 21 | ||||
-rw-r--r-- | gcc/ada/sem_ch6.adb | 25 |
3 files changed, 46 insertions, 9 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b9d9baf..2451727 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -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 diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index a17d454..1f26563 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -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}) diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb index 2b32568..7d4bcd1 100644 --- a/gcc/ada/sem_ch6.adb +++ b/gcc/ada/sem_ch6.adb @@ -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)); |