# 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]





Reply via email to