[Ada] Unnesting: always transform local Raise statements
authorEd Schonberg <schonberg@adacore.com>
Wed, 30 May 2018 08:58:57 +0000 (08:58 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 30 May 2018 08:58:57 +0000 (08:58 +0000)
2018-05-30  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* exp_ch11.adb (Replace_Raise_By_Goto): The transfomation is legal even
if the local raise statement includes a string expression. This
expression might be picked up by an outer handler or discarded, but
plays no role in this transformation.

From-SVN: r260949

gcc/ada/ChangeLog
gcc/ada/exp_ch11.adb

index 528eea4eaa20f6044236c4eefbd1ea4f65b20f2e..db17d684e767db1b74c45a61505540a16ce41b53 100644 (file)
@@ -1,3 +1,10 @@
+2018-05-30  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch11.adb (Replace_Raise_By_Goto): The transfomation is legal even
+       if the local raise statement includes a string expression. This
+       expression might be picked up by an outer handler or discarded, but
+       plays no role in this transformation.
+
 2018-05-30  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * exp_aggr.adb, exp_unst.adb, freeze.adb, libgnat/a-direct.adb: Minor
index 4619b36bb6446f2bd276cd126fe2a21da91ec8dd..b197c4e7959946775e383f1ec77184081b6a7d84 100644 (file)
@@ -913,13 +913,13 @@ package body Exp_Ch11 is
             Cond := Condition (Raise_S);
 
             --  The only other possibility is a node that is or used to be a
-            --  simple raise statement.
+            --  simple raise statement. Note that the string expression in
+            --  the original Raise statement is ignored.
 
          else
             Orig := Original_Node (Raise_S);
             pragma Assert (Nkind (Orig) = N_Raise_Statement
-                             and then Present (Name (Orig))
-                             and then No (Expression (Orig)));
+                             and then Present (Name (Orig)));
             Excep := Entity (Name (Orig));
             Cond := Empty;
          end if;