1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-11 22:31:12 +02:00

* Added a comment suggesting to rename scm_handle_by_message.

* When compiling on gcc, always avoid the GCSE bug.
* Removed some redundant tests.
This commit is contained in:
Dirk Herrmann 2000-09-19 10:56:57 +00:00
parent e621f2b022
commit 5a2a5407e8
2 changed files with 15 additions and 10 deletions

View file

@ -1,3 +1,10 @@
2000-09-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
* throw.c (scm_handle_by_message): Added a FIXME comment.
(scm_ithrow): Removed some redundant tests. When compiling on
gcc, always add the GCSE bug workaround.
2000-09-14 Gary Houston <ghouston@arglist.com> 2000-09-14 Gary Houston <ghouston@arglist.com>
* print.c (scm_iprin1): write the ascii delete character as #\del * print.c (scm_iprin1): write the ascii delete character as #\del

View file

@ -472,6 +472,10 @@ handler_message (void *handler_data, SCM tag, SCM args)
message header to print; if zero, we use "guile" instead. That message header to print; if zero, we use "guile" instead. That
text is followed by a colon, then the message described by ARGS. */ text is followed by a colon, then the message described by ARGS. */
/* Dirk:FIXME:: The name of the function should make clear that the
* application gets terminated.
*/
SCM SCM
scm_handle_by_message (void *handler_data, SCM tag, SCM args) scm_handle_by_message (void *handler_data, SCM tag, SCM args)
{ {
@ -605,11 +609,8 @@ scm_ithrow (SCM key, SCM args, int noreturn)
/* Search the wind list for an appropriate catch. /* Search the wind list for an appropriate catch.
"Waiter, please bring us the wind list." */ "Waiter, please bring us the wind list." */
for (winds = scm_dynwinds; SCM_NIMP (winds); winds = SCM_CDR (winds)) for (winds = scm_dynwinds; SCM_CONSP (winds); winds = SCM_CDR (winds))
{ {
if (! SCM_CONSP (winds))
abort ();
dynpair = SCM_CAR (winds); dynpair = SCM_CAR (winds);
if (SCM_CONSP (dynpair)) if (SCM_CONSP (dynpair))
{ {
@ -620,28 +621,25 @@ scm_ithrow (SCM key, SCM args, int noreturn)
} }
} }
#ifdef BROKEN_GCSE
#ifdef __GNUC__ #ifdef __GNUC__
/* Dirk:FIXME:: This bugfix should be removed some time. */
/* GCC 2.95.2 has a bug in its optimizer that makes it generate /* GCC 2.95.2 has a bug in its optimizer that makes it generate
incorrect code sometimes. This barrier stops it from being too incorrect code sometimes. This barrier stops it from being too
clever. */ clever. */
asm volatile ("" : "=g" (winds)); asm volatile ("" : "=g" (winds));
#else
#error "GCSE bug found: reconfigure without optimization?"
#endif
#endif #endif
/* If we didn't find anything, print a message and abort the process /* If we didn't find anything, print a message and abort the process
right here. If you don't want this, establish a catch-all around right here. If you don't want this, establish a catch-all around
any code that might throw up. */ any code that might throw up. */
if (SCM_NULLP (winds) || SCM_FALSEP (dynpair)) if (SCM_NULLP (winds))
{ {
scm_handle_by_message (NULL, key, args); scm_handle_by_message (NULL, key, args);
abort (); abort ();
} }
/* If the wind list is malformed, bail. */ /* If the wind list is malformed, bail. */
if (SCM_IMP (winds) || SCM_NCONSP (winds)) if (!SCM_CONSP (winds))
abort (); abort ();
jmpbuf = SCM_CDR (dynpair); jmpbuf = SCM_CDR (dynpair);