public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/users/guojiufu/heads/guojiufu-branch)] [Ada] ICE during unnesting when nested subprograms have address taken
@ 2020-06-10  3:23 Jiu Fu Guo
  0 siblings, 0 replies; only message in thread
From: Jiu Fu Guo @ 2020-06-10  3:23 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:d7f696a040a0fd85ea58399836a77f903d6bf039

commit d7f696a040a0fd85ea58399836a77f903d6bf039
Author: Gary Dismukes <dismukes@adacore.com>
Date:   Thu Dec 19 17:00:27 2019 -0500

    [Ada] ICE during unnesting when nested subprograms have address taken
    
    2020-06-02  Gary Dismukes  <dismukes@adacore.com>
    
    gcc/ada/
    
            * exp_unst.adb (Register_Subprogram): Test for Address_Taken (in
            addition to the existing test for In_Synchonized_Unit) when
            deciding whether to reset the Reachable flag on all subprograms
            enclosing the subprogram being registered.

Diff:
---
 gcc/ada/exp_unst.adb | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb
index 1460b641b19..b3ded138ee5 100644
--- a/gcc/ada/exp_unst.adb
+++ b/gcc/ada/exp_unst.adb
@@ -841,9 +841,13 @@ package body Exp_Unst is
 
                --  If we marked this reachable because it's in a synchronized
                --  unit, we have to mark all enclosing subprograms as reachable
-               --  as well.
+               --  as well. We do the same for subprograms with Address_Taken,
+               --  because otherwise we can run into problems with looking at
+               --  enclosing subprograms in Subps.Table due to their being
+               --  unreachable (the Subp_Index of unreachable subps is later
+               --  set to zero and their entry in Subps.Table is removed).
 
-               if In_Synchronized_Unit (E) then
+               if In_Synchronized_Unit (E) or else Address_Taken (E) then
                   declare
                      S : Entity_Id := E;


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-06-10  3:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10  3:23 [gcc(refs/users/guojiufu/heads/guojiufu-branch)] [Ada] ICE during unnesting when nested subprograms have address taken Jiu Fu Guo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).