aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2012-11-06 10:59:02 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2012-11-06 10:59:02 +0100
commit2780d17486479a152560b6173434199dcc685727 (patch)
tree34e5664bb162ada3f35c5be48280ecdd20060373
parent0ce1ec64654b26a2417000c2710c52f6711f9ddb (diff)
downloadgcc-2780d17486479a152560b6173434199dcc685727.zip
gcc-2780d17486479a152560b6173434199dcc685727.tar.gz
gcc-2780d17486479a152560b6173434199dcc685727.tar.bz2
[multiple changes]
2012-11-06 Ed Schonberg <schonberg@adacore.com> * sem_ch8.adb (Check_Constrained_Object): Do nothing if the renamed object is a limited record. 2012-11-06 Bernard Banner <banner@adacore.com> * sysdep.c (_getpagesize): New. Minor reformatting. From-SVN: r193218
-rw-r--r--gcc/ada/ChangeLog9
-rw-r--r--gcc/ada/sem_ch8.adb9
-rw-r--r--gcc/ada/sysdep.c19
3 files changed, 31 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index dd82c97..b1099c3 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,12 @@
+2012-11-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch8.adb (Check_Constrained_Object): Do nothing if the
+ renamed object is a limited record.
+
+2012-11-06 Bernard Banner <banner@adacore.com>
+
+ * sysdep.c (_getpagesize): New. Minor reformatting.
+
2012-11-06 Robert Dewar <dewar@adacore.com>
* sem_prag.adb: Minor reformatting.
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index ec94ed6..d2bd01d 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -731,6 +731,15 @@ package body Sem_Ch8 is
elsif Is_Unchecked_Union (Etype (Nam)) then
null;
+ -- If a record is limited its size is invariant. This is the case
+ -- in particular with record types with an access discirminant
+ -- that are used in iterators. This is an optimization, but it
+ -- also prevents typing anomalies when the prefix is further
+ -- expanded.
+
+ elsif Is_Limited_Record (Etype (Nam)) then
+ null;
+
else
Subt := Make_Temporary (Loc, 'T');
Remove_Side_Effects (Nam);
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c
index a2c4d86..1eec8b9 100644
--- a/gcc/ada/sysdep.c
+++ b/gcc/ada/sysdep.c
@@ -938,30 +938,37 @@ __gnat_is_file_not_found_error (int errno_val) {
int
_sigismember (sigset_t *set, int signum)
{
- return sigismember (set, signum);
+ return sigismember (set, signum);
}
int
_sigaddset (sigset_t *set, int signum)
{
- return sigaddset (set, signum);
+ return sigaddset (set, signum);
}
int
_sigdelset (sigset_t *set, int signum)
{
- return sigdelset (set, signum);
+ return sigdelset (set, signum);
}
int
_sigemptyset (sigset_t *set)
{
- return sigemptyset (set);
+ return sigemptyset (set);
}
int
-_sigfillset(sigset_t *set)
+_sigfillset (sigset_t *set)
{
- return sigfillset (set);
+ return sigfillset (set);
+}
+
+#include <unistd.h>
+int
+_getpagesize (void)
+{
+ return getpagesize ();
}
#endif