aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-07-23 11:17:56 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-07-23 11:17:56 +0200
commit212863c0676464d2e3ede50b6e04556b3b88257e (patch)
tree7aacfef1a126574402faee123141f699f8cb4a61 /gcc
parent97cb64f052a76046aaf4d3290ef5ceb744f3e779 (diff)
downloadgcc-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')
-rw-r--r--gcc/ada/ChangeLog9
-rw-r--r--gcc/ada/gnat_rm.texi21
-rw-r--r--gcc/ada/sem_ch6.adb25
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));