aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/raise.c
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2009-07-27 15:56:38 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2009-07-27 15:56:38 +0200
commitcff7cd9b1336236660bf486021063e96271cf137 (patch)
treef16eced7a23d13f12e1181ad22bb2d9e4fc942d1 /gcc/ada/raise.c
parent57036dccfcf8e3da00e71cd00ed4a9c3825b3ad9 (diff)
downloadgcc-cff7cd9b1336236660bf486021063e96271cf137.zip
gcc-cff7cd9b1336236660bf486021063e96271cf137.tar.gz
gcc-cff7cd9b1336236660bf486021063e96271cf137.tar.bz2
[multiple changes]
2009-07-27 Robert Dewar <dewar@adacore.com> * sem_util.adb, sem_util.ads (Kill_Current_Values): Reset Is_Known_Valid 2009-07-27 Javier Miranda <miranda@adacore.com> * exp_disp.adb (Expand_Dispatching_Call): Reverse previous patch and add some documentation explaining why the SCIL nodes must be generated at that point. 2009-07-27 Olivier Hainque <hainque@adacore.com> * a-except.adb: Bind to __builtin_longjmp directly. * a-except-2005.ads: Provide direct binding to __builtin_longjmp for sjlj variants. * a-exexpr.adb: Use it. * a-except-xi.adb: Likewise. * raise.c (_gnat_builtin_longjmp): Remove and update comments. * raise.h (_gnat_builtin_longjmp): Remove declaration. From-SVN: r150119
Diffstat (limited to 'gcc/ada/raise.c')
-rw-r--r--gcc/ada/raise.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/gcc/ada/raise.c b/gcc/ada/raise.c
index d821323..1f08778 100644
--- a/gcc/ada/raise.c
+++ b/gcc/ada/raise.c
@@ -29,11 +29,8 @@
* *
****************************************************************************/
-/* Shared routines to support exception handling.
- Note that _gnat_builtin_longjmp should disappear at some point, replaced
- by direct call to __builtin_longjmp from Ada code.
- __gnat_unhandled_terminate is code shared between all exception handling
- mechanisms */
+/* Shared routines to support exception handling. __gnat_unhandled_terminate
+ is shared between all exception handling mechanisms. */
#ifdef IN_RTS
#include "tconfig.h"
@@ -46,13 +43,19 @@
#include "adaint.h"
#include "raise.h"
-/* We have not yet figured out how to import this directly */
+/* Wrapper to builtin_longjmp. This is for the compiler eh only, as the sjlj
+ runtime library interfaces directly to the intrinsic. We can't yet do
+ this for the compiler itself, because this capability relies on changes
+ made in april 2008 and we need to preserve the possibility to bootstrap
+ with an older base version. */
+#if defined (IN_GCC) && !defined (IN_RTS)
void
_gnat_builtin_longjmp (void *ptr, int flag ATTRIBUTE_UNUSED)
{
__builtin_longjmp (ptr, 1);
}
+#endif
/* When an exception is raised for which no handler exists, the procedure
Ada.Exceptions.Unhandled_Exception is called, which performs the call to