diff options
author | Javier Miranda <miranda@adacore.com> | 2018-05-21 14:51:55 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-05-21 14:51:55 +0000 |
commit | 0d8b6803b9abafea59b08702a582605316544245 (patch) | |
tree | 6a5c9a055df005c62cd3d9c31cb411a45638b9e3 | |
parent | 926890219d00e4f59cdc3afe4aba490049df04bd (diff) | |
download | gcc-0d8b6803b9abafea59b08702a582605316544245.zip gcc-0d8b6803b9abafea59b08702a582605316544245.tar.gz gcc-0d8b6803b9abafea59b08702a582605316544245.tar.bz2 |
[Ada] Avoid compiler crash for body in non Ada 2012 mode
2018-05-21 Javier Miranda <miranda@adacore.com>
gcc/ada/
* sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the
spec of a unit has Ada 2012 membership tests with multiple choices and
the unit body is not compiled under Ada 2012 mode.
From-SVN: r260464
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/sem_ch4.adb | 12 |
2 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 1d41d1e..d21a5d9 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-04-04 Javier Miranda <miranda@adacore.com> + + * sem_ch4.adb (Analyze_Membership_Op): Avoid compiler crash when the + spec of a unit has Ada 2012 membership tests with multiple choices and + the unit body is not compiled under Ada 2012 mode. + 2018-04-04 Doug Rupp <rupp@adacore.com> * sigtramp-vxworks-target.inc: Set cfa_reg properly from sigcontext diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index e1e826e..2452cf9 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -3030,9 +3030,15 @@ package body Sem_Ch4 is begin Analyze_Expression (L); - if No (R) and then Ada_Version >= Ada_2012 then - Analyze_Set_Membership; - Check_Function_Writable_Actuals (N); + if No (R) then + if Ada_Version >= Ada_2012 then + Analyze_Set_Membership; + Check_Function_Writable_Actuals (N); + else + Error_Msg_N + ("multiple choices in membership tests only allowed in Ada 2012", + N); + end if; return; end if; |