aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch6.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-09-06 15:07:09 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-09-06 15:07:09 +0200
commitebb6faaafae68ade1685169e3f23a6870ed63102 (patch)
treebd2a46378d5d0c491e6e9ed5f4c8e364b95888eb /gcc/ada/sem_ch6.adb
parent604352863ceed2abf06f77f95184d6e46fc62501 (diff)
downloadgcc-ebb6faaafae68ade1685169e3f23a6870ed63102.zip
gcc-ebb6faaafae68ade1685169e3f23a6870ed63102.tar.gz
gcc-ebb6faaafae68ade1685169e3f23a6870ed63102.tar.bz2
[multiple changes]
2011-09-06 Jerome Guitton <guitton@adacore.com> * sysdep.c (__gnat_get_task_options): Disable VX_SPE_TASK on vThreads. 2011-09-06 Thomas Quinot <quinot@adacore.com> * s-solita.adb: Minor reformatting. 2011-09-06 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The body that is a rewriting of an expression function does not freeze previous entities. 2011-09-06 Robert Dewar <dewar@adacore.com> * impunit.adb (Is_Known_Unit): Fix bad handling of Ada 2012 case From-SVN: r178593
Diffstat (limited to 'gcc/ada/sem_ch6.adb')
-rw-r--r--gcc/ada/sem_ch6.adb7
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index d82cd72..10de099 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -2346,7 +2346,12 @@ package body Sem_Ch6 is
-- expansion has generated an equivalent type that is used when
-- elaborating the body.
- if No (Spec_Id) then
+ -- An exception in the case of Ada2012, AI05-177: The bodies
+ -- created for expression functions do not freeze.
+
+ if No (Spec_Id)
+ and then Nkind (Original_Node (N)) /= N_Expression_Function
+ then
Freeze_Before (N, Body_Id);
elsif Nkind (Parent (N)) = N_Compilation_Unit then