# New Ticket Created by Andy Dougherty
# Please include the string: [perl #20355]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=20355 >
I don't think the ifdef logic is quite right in cpu_dep.c. Specifically,
if either __sparc or __ia64__ is defined, then *both* the cpu-dependent
register flushing *and* the setjmp-using register flushing tricks are
used.
This actually shows up as a syntax error on the "frivolous" tinderbox.
The enclosed patch changes the logic to what I suspect was actually
intended.
--- parrot-current/cpu_dep.c Sat Jan 4 03:00:09 2003
+++ parrot-andy/cpu_dep.c Thu Jan 16 13:49:32 2003
@@ -26,7 +26,7 @@
trace_system_areas(struct Parrot_Interp *interpreter)
{
-#ifdef __sparc /* Flush register windows */
+#if defined(__sparc) /* Flush register windows */
static union {
int insns[4];
double align_hack[2];
@@ -42,10 +42,8 @@
static void (*fn_ptr)(void) = (void (*)(void))&u.align_hack[0];
fn_ptr();
-#endif
-
-#ifdef __ia64__
+#elif defined(__ia64__)
struct ucontext ucp;
void *current_regstore_top;
--
Andy Dougherty [EMAIL PROTECTED]