exp_ch11.adb (Expand_N_Raise_Statement): Make sure that the explicit raise of CE...
authorJerome Lambourg <lambourg@adacore.com>
Mon, 14 Jun 2010 15:01:29 +0000 (15:01 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 14 Jun 2010 15:01:29 +0000 (17:01 +0200)
2010-06-14  Jerome Lambourg  <lambourg@adacore.com>

* exp_ch11.adb (Expand_N_Raise_Statement): Make sure that the explicit
raise of CE, SE and PE have the reason correctly set and are properly
expanded before stopping the expansions of .NET/JVM exceptions.

From-SVN: r160747

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

index 78ebd92..8f28a3c 100644 (file)
@@ -1,3 +1,9 @@
+2010-06-14  Jerome Lambourg  <lambourg@adacore.com>
+
+       * exp_ch11.adb (Expand_N_Raise_Statement): Make sure that the explicit
+       raise of CE, SE and PE have the reason correctly set and are properly
+       expanded before stopping the expansions of .NET/JVM exceptions.
+
 2010-06-14  Robert Dewar  <dewar@adacore.com>
 
        * opt.ads (Check_Policy_List): Add some clarifying comments
index 21f878b..3978e94 100644 (file)
@@ -1516,15 +1516,6 @@ package body Exp_Ch11 is
       --  Remaining processing is for the case where no string expression
       --  is present.
 
-      --  There is no expansion needed for statement "raise <exception>;" when
-      --  compiling for the JVM since the JVM has a built-in exception
-      --  mechanism. However we need to keep the expansion for "raise;"
-      --  statements. See 4jexcept.ads for details.
-
-      if Present (Name (N)) and then VM_Target /= No_VM then
-         return;
-      end if;
-
       --  Don't expand a raise statement that does not come from source
       --  if we have already had configurable run-time violations, since
       --  most likely it will be junk cascaded nonsense.
@@ -1564,6 +1555,15 @@ package body Exp_Ch11 is
          end if;
       end if;
 
+      --  There is no expansion needed for statement "raise <exception>;" when
+      --  compiling for the JVM since the JVM has a built-in exception
+      --  mechanism. However we need to keep the expansion for "raise;"
+      --  statements. See 4jexcept.ads for details.
+
+      if Present (Name (N)) and then VM_Target /= No_VM then
+         return;
+      end if;
+
       --  Case of name present, in this case we expand raise name to
 
       --    Raise_Exception (name'Identity, location_string);