From 2780d17486479a152560b6173434199dcc685727 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Tue, 6 Nov 2012 10:59:02 +0100 Subject: [PATCH] [multiple changes] 2012-11-06 Ed Schonberg * sem_ch8.adb (Check_Constrained_Object): Do nothing if the renamed object is a limited record. 2012-11-06 Bernard Banner * sysdep.c (_getpagesize): New. Minor reformatting. From-SVN: r193218 --- gcc/ada/ChangeLog | 9 +++++++++ gcc/ada/sem_ch8.adb | 9 +++++++++ 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 + + * sem_ch8.adb (Check_Constrained_Object): Do nothing if the + renamed object is a limited record. + +2012-11-06 Bernard Banner + + * sysdep.c (_getpagesize): New. Minor reformatting. + 2012-11-06 Robert Dewar * 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 +int +_getpagesize (void) +{ + return getpagesize (); } #endif -- 2.7.4