# New Ticket Created by Ron Blaschke # Please include the string: [perl #43535] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=43535 >
It seems like function pointers were required to be aligned and the extra bits were used to store flags. That's what the assertion is for. Since this isn't always true for all platforms there seems to be a hack around this, which can be disabled with C<PARROT_HAS_ALIGNED_FUNCPTR> (see F<src/mmd.c>:239). I guess it would be good to tie the assertion and the workaround to the same macro. Changed Files: src/mmd.c
Index: src/mmd.c =================================================================== --- src/mmd.c (revision 19572) +++ src/mmd.c (working copy) @@ -1662,10 +1662,7 @@ * register default mmds for this type */ for (i = 0; i < n; ++i) { - /* The following always fails for Intel C++ for unknown reasons, - * but I'm assuming it's optimizer related. - */ -#ifndef __INTEL_COMPILER +#ifdef PARROT_HAS_ALIGNED_FUNCPTR assert((PTR2UINTVAL(mmd_table[i].func_ptr) & 3) == 0); #endif mmd_register(interp,