diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-11-06 10:59:02 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-11-06 10:59:02 +0100 |
commit | 2780d17486479a152560b6173434199dcc685727 (patch) | |
tree | 34e5664bb162ada3f35c5be48280ecdd20060373 | |
parent | 0ce1ec64654b26a2417000c2710c52f6711f9ddb (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/ada/sem_ch8.adb | 9 | ||||
-rw-r--r-- | gcc/ada/sysdep.c | 19 |
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 |