diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-07-27 15:56:38 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-07-27 15:56:38 +0200 |
commit | cff7cd9b1336236660bf486021063e96271cf137 (patch) | |
tree | f16eced7a23d13f12e1181ad22bb2d9e4fc942d1 /gcc/ada/raise.c | |
parent | 57036dccfcf8e3da00e71cd00ed4a9c3825b3ad9 (diff) | |
download | gcc-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.c | 15 |
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 |