diff options
author | Javier Miranda <miranda@adacore.com> | 2018-08-21 14:48:35 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-08-21 14:48:35 +0000 |
commit | 322d87a9b17660f7d04a7320505591538582892a (patch) | |
tree | f2c5a63f3c954a385252992ef259e7cb05ccc167 /gcc/ada | |
parent | 24241bd0388ec6f730788540b289da12c13a34cc (diff) | |
download | gcc-322d87a9b17660f7d04a7320505591538582892a.zip gcc-322d87a9b17660f7d04a7320505591538582892a.tar.gz gcc-322d87a9b17660f7d04a7320505591538582892a.tar.bz2 |
[Ada] Crash processing SPARK annotate aspect
The compiler blows up writing the ALI file of a package that has a ghost
subprogram with an annotate contract.
2018-08-21 Javier Miranda <miranda@adacore.com>
gcc/ada/
* lib-writ.adb (Write_Unit_Information): Handle pragmas removed
by the expander.
gcc/testsuite/
* gnat.dg/spark2.adb, gnat.dg/spark2.ads: New testcase.
From-SVN: r263732
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/lib-writ.adb | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index ff886eb..1d21061 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-08-21 Javier Miranda <miranda@adacore.com> + + * lib-writ.adb (Write_Unit_Information): Handle pragmas removed + by the expander. + 2018-08-21 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Check_Synchronized_Overriding): The conformance diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb index 9a54fa9..beb9489 100644 --- a/gcc/ada/lib-writ.adb +++ b/gcc/ada/lib-writ.adb @@ -744,7 +744,14 @@ package body Lib.Writ is Note_Unit := U; end if; - if Note_Unit = Unit_Num then + -- No action needed for pragmas removed by the expander (for + -- example, pragmas of ignored ghost entities). + + if Nkind (N) = N_Null_Statement then + pragma Assert (Nkind (Original_Node (N)) = N_Pragma); + null; + + elsif Note_Unit = Unit_Num then Write_Info_Initiate ('N'); Write_Info_Char (' '); |