summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-09-18 14:01:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-09-18 14:01:37 +0000
commit0713e0e653b39644e5357fa1b872a33c68aff4e8 (patch)
tree06dad70a3d428e576ef513e7963e1de582ca8611
parent2e7aba8e1c18ebba49ec9f3dac0e27783cb7dd46 (diff)
downloadgcc-0713e0e653b39644e5357fa1b872a33c68aff4e8.tar.gz
2009-09-18 Pascal Obry <obry@adacore.com>
* mingw32.h: Activate Unicode support for x86-64 Windows platform. 2009-09-18 Vadim Godunko <godunko@adacore.com> * s-oscons-tmplt.c: Add circuit for handling IOV_MAX macro on IRIX. 2009-09-18 Javier Miranda <miranda@adacore.com> * exp_aggr.adb (Backend_Processing_Possible): Disable backend processing for array aggregates in the VM backend if the array has aliased components. 2009-09-18 Ed Schonberg <schonberg@adacore.com> * sem_ch4.adb (Analyze_Indexed_Component): Emit error if the type of the prefix indicates a previous semantic error, and this is the first error in the program. 2009-09-18 Bob Duff <duff@adacore.com> * gnat_ugn.texi: Minor editing. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151844 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog24
-rw-r--r--gcc/ada/exp_aggr.adb16
-rw-r--r--gcc/ada/gnat_ugn.texi50
-rw-r--r--gcc/ada/mingw32.h3
-rw-r--r--gcc/ada/s-oscons-tmplt.c10
-rw-r--r--gcc/ada/sem_ch4.adb15
6 files changed, 91 insertions, 27 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3729771d303..41711f429d8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,27 @@
+2009-09-18 Pascal Obry <obry@adacore.com>
+
+ * mingw32.h: Activate Unicode support for x86-64 Windows platform.
+
+2009-09-18 Vadim Godunko <godunko@adacore.com>
+
+ * s-oscons-tmplt.c: Add circuit for handling IOV_MAX macro on IRIX.
+
+2009-09-18 Javier Miranda <miranda@adacore.com>
+
+ * exp_aggr.adb (Backend_Processing_Possible): Disable backend
+ processing for array aggregates in the VM backend if the array has
+ aliased components.
+
+2009-09-18 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch4.adb (Analyze_Indexed_Component): Emit error if the type of
+ the prefix indicates a previous semantic error, and this is the first
+ error in the program.
+
+2009-09-18 Bob Duff <duff@adacore.com>
+
+ * gnat_ugn.texi: Minor editing.
+
2009-09-18 Vincent Celier <celier@adacore.com>
* prj.ads, prj.adb (Project_Data): New component
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 15338e4b24b..913e46df374 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -56,6 +56,7 @@ with Sem_Util; use Sem_Util;
with Sinfo; use Sinfo;
with Snames; use Snames;
with Stand; use Stand;
+with Targparm; use Targparm;
with Tbuild; use Tbuild;
with Uintp; use Uintp;
@@ -216,7 +217,7 @@ package body Exp_Aggr is
function Backend_Processing_Possible (N : Node_Id) return Boolean;
-- This function checks if array aggregate N can be processed directly
- -- by Gigi. If this is the case True is returned.
+ -- by the backend. If this is the case True is returned.
function Build_Array_Aggr_Code
(N : Node_Id;
@@ -508,6 +509,8 @@ package body Exp_Aggr is
-- 10. No controlled actions need to be generated for components
+ -- 11. The backend is a No_VM backend and the array has aliased components
+
function Backend_Processing_Possible (N : Node_Id) return Boolean is
Typ : constant Entity_Id := Etype (N);
-- Typ is the correct constrained array subtype of the aggregate
@@ -634,6 +637,16 @@ package body Exp_Aggr is
return False;
end if;
+ -- Checks 11: Array aggregates with aliased components are currently
+ -- not well supported by the VM backend; disable temporarily this
+ -- backend processing until it is definitely supported.
+
+ if VM_Target /= No_VM
+ and then Has_Aliased_Components (Base_Type (Typ))
+ then
+ return False;
+ end if;
+
-- Backend processing is possible
Set_Size_Known_At_Compile_Time (Etype (N), True);
@@ -4622,6 +4635,7 @@ package body Exp_Aggr is
end if;
Aggr_In := First_Index (Etype (N));
+
if Nkind (Parent (N)) = N_Assignment_Statement then
Obj_In := First_Index (Etype (Name (Parent (N))));
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 7a65203b7fe..d777f6dd099 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -7389,7 +7389,7 @@ through the compilation and binding steps.
@table @option
-@item -gnatem^^=^@var{path}
+@item -gnatem=@var{path}
@cindex @option{-gnatem} (@command{gcc})
A mapping file is a way to communicate to the compiler two mappings:
from unit names to file names (without any directory information) and from
@@ -7401,15 +7401,14 @@ compiler, but mapping files can improve efficiency, particularly when
sources are read over a slow network connection. In normal operation,
you need not be concerned with the format or use of mapping files,
and the @option{-gnatem} switch is not a switch that you would use
-explicitly. it is intended only for use by automatic tools such as
+explicitly. It is intended primarily for use by automatic tools such as
@command{gnatmake} running under the project file facility. The
description here of the format of mapping files is provided
for completeness and for possible use by other tools.
-A mapping file is a sequence of sets of three lines. In each set,
-the first line is the unit name, in lower case, with ``@code{%s}''
-appended for
-specs and ``@code{%b}'' appended for bodies; the second line is the
+A mapping file is a sequence of sets of three lines. In each set, the
+first line is the unit name, in lower case, with @code{%s} appended
+for specs and @code{%b} appended for bodies; the second line is the
file name; and the third line is the path name.
Example:
@@ -7419,16 +7418,16 @@ Example:
/gnat/project1/sources/main.2.ada
@end smallexample
-When the switch @option{-gnatem} is specified, the compiler will create
-in memory the two mappings from the specified file. If there is any problem
-(nonexistent file, truncated file or duplicate entries), no mapping will
-be created.
+When the switch @option{-gnatem} is specified, the compiler will
+create in memory the two mappings from the specified file. If there is
+any problem (nonexistent file, truncated file or duplicate entries),
+no mapping will be created.
-Several @option{-gnatem} switches may be specified; however, only the last
-one on the command line will be taken into account.
+Several @option{-gnatem} switches may be specified; however, only the
+last one on the command line will be taken into account.
-When using a project file, @command{gnatmake} create a temporary mapping file
-and communicates it to the compiler using this switch.
+When using a project file, @command{gnatmake} creates a temporary
+mapping file and communicates it to the compiler using this switch.
@end table
@@ -9267,16 +9266,19 @@ the objects.
@item ^-C^/MAPPING^
@cindex @option{^-C^/MAPPING^} (@command{gnatmake})
-Use a temporary mapping file. A mapping file is a way to communicate to the
-compiler two mappings: from unit names to file names (without any directory
-information) and from file names to path names (with full directory
-information). These mappings are used by the compiler to short-circuit the path
-search. When @command{gnatmake} is invoked with this switch, it will create
-a temporary mapping file, initially populated by the project manager,
-if @option{^-P^/PROJECT_FILE^} is used, otherwise initially empty.
-Each invocation of the compiler will add the newly accessed sources to the
-mapping file. This will improve the source search during the next invocation
-of the compiler.
+Use a temporary mapping file. A mapping file is a way to communicate
+to the compiler two mappings: from unit names to file names (without
+any directory information) and from file names to path names (with
+full directory information). A mapping file can make the compiler's
+file searches faster, especially if there are many source directories,
+or the sources are read over a slow network connection. If
+@option{^-P^/PROJECT_FILE^} is used, a mapping file is always used, so
+@option{^-C^/MAPPING^} is unnecessary; in this case the mapping file
+is initially populated based on the project file. If
+@option{^-C^/MAPPING^} is used without
+@option{^-P^/PROJECT_FILE^},
+the mapping file is initially empty. Each invocation of the compiler
+will add any newly accessed sources to the mapping file.
@item ^-C=^/USE_MAPPING_FILE=^@var{file}
@cindex @option{^-C=^/USE_MAPPING^} (@command{gnatmake})
diff --git a/gcc/ada/mingw32.h b/gcc/ada/mingw32.h
index 011e90bb270..f11572e7c2a 100644
--- a/gcc/ada/mingw32.h
+++ b/gcc/ada/mingw32.h
@@ -44,7 +44,8 @@
#if (((__MINGW32_MAJOR_VERSION == 3 \
&& __MINGW32_MINOR_VERSION >= 9) \
- || (__MINGW32_MAJOR_VERSION >= 4)) \
+ || (__MINGW32_MAJOR_VERSION >= 4) \
+ || defined (__MINGW64)) \
&& !defined (RTX))
#define GNAT_UNICODE_SUPPORT
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index c1075d68126..48938d9d9d1 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -79,8 +79,16 @@ pragma Style_Checks ("M32766");
**/
#if defined (__linux__) && !defined (_XOPEN_SOURCE)
-/* For Linux _XOPEN_SOURCE must be defined, otherwise IOV_MAX is not defined */
+/** For Linux _XOPEN_SOURCE must be defined, otherwise IOV_MAX is not defined
+ **/
#define _XOPEN_SOURCE 500
+
+#elif defined (__mips) && defined (__sgi)
+/** For IRIX _XOPEN5 must be defined and _XOPEN_IOV_MAX must be used as IOV_MAX,
+ ** otherwise IOV_MAX is not defined.
+ **/
+#define _XOPEN5
+#define IOV_MAX _XOPEN_IOV_MAX
#endif
#include <stdlib.h>
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 28856d0f24d..99c24a12a2e 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -1712,6 +1712,20 @@ package body Sem_Ch4 is
elsif Array_Type = Any_Type then
Set_Etype (N, Any_Type);
+
+ -- In most cases the analysis of the prefix will have emitted
+ -- an error already, but if the prefix may be interpreted as a
+ -- call in prefixed notation, the report is left to the caller.
+ -- To prevent cascaded errors, report only if no previous ones.
+
+ if Serious_Errors_Detected = 0 then
+ Error_Msg_N ("invalid prefix in indexed component", P);
+
+ if Nkind (P) = N_Expanded_Name then
+ Error_Msg_NE ("\& is not visible", P, Selector_Name (P));
+ end if;
+ end if;
+
return;
-- Here we definitely have a bad indexing
@@ -6689,6 +6703,7 @@ package body Sem_Ch4 is
begin
return Present (Visible_Op)
+ and then Scope (Op) = Scope (Visible_Op)
and then not Comes_From_Source (Visible_Op)
and then Alias (Visible_Op) = Op
and then not Is_Hidden (Visible_Op);