On Friday 27 April 2007 12:22, Steve Peters wrote:

> The attached additional patch fixes one problem caused by the previous
> patch and gets Intel C++ to compile and pass all of its tests on
> Linux.  Only apply the attached patch after applying the first patch.

This part bothers me:

--- src/mmd.c   (revision 18345)
+++ src/mmd.c   (working copy)
@@ -1703,7 +1703,12 @@
      * 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 its optimizer related.
+         */
+#ifndef __INTEL_COMPILER
         assert((PTR2UINTVAL(mmd_table[i].func_ptr) & 3) == 0);
+#endif
         mmd_register(interp,
                 mmd_table[i].func_nr, type,
                 mmd_table[i].right, mmd_table[i].func_ptr);

I know *what* the code does (squeal if the lower two bits of the pointer are 
set), but neither why nor what those bits signify (alignment problems? 
special MMD type flags?  PMC type flags?).

It's not a problem with the patch per se, but it's definitely something weird 
in the code to track down further.

Thanks, both patches applied as r18347.

-- c

Reply via email to