[Ada] Crash on ignored Ghost expression function
authorHristian Kirtchev <kirtchev@adacore.com>
Tue, 11 Dec 2018 11:10:42 +0000 (11:10 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 11 Dec 2018 11:10:42 +0000 (11:10 +0000)
commite2819941fc6eb15c3955d75e45f30dedb3713389
tree3ee029cb67dc295c3463f544a96950117e7a3367
parent30a5fd0b463897d12a9f4e3e27a15b3146a52b3d
[Ada] Crash on ignored Ghost expression function

This patch updates freezing to ensure that freeze nodes are inserted
into the tree when the entity being frozen is non-Ghost, and the context
is an ignored Ghost spec expression.

2018-12-11  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* exp_util.adb (Insert_Action): Add new formal parameter
Spec_Expr_OK.
(Insert_Actions): Add new formal parameter Spec_Expr_OK. Update
all calls to Insert_Actions where relevant. Honour an insertion
from a spec expression context when requested by the caller.
* exp_util.ads (Insert_Action): Add new formal parameter
Spec_Expr_OK.
(Insert_Actions): Add new formal parameter Spec_Expr_OK.
* freeze.adb (Add_To_Result): Force the insertion of the freeze
node even when the context is a spec expression.

gcc/testsuite/

* gnat.dg/ghost2.adb, gnat.dg/ghost2.ads: New testcase.

From-SVN: r266996
gcc/ada/ChangeLog
gcc/ada/exp_util.adb
gcc/ada/exp_util.ads
gcc/ada/freeze.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/ghost2.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/ghost2.ads [new file with mode: 0644]