])
+dnl test and set the alignment define for ZEND_MM
+dnl this also does the logarithmic test for ZEND_MM.
+
+AC_MSG_CHECKING(for MM alignment and log values)
+
+AC_TRY_RUN([#include <stdio.h>
+
+typedef union _mm_align_test {
+ void *ptr;
+ double dbl;
+ long lng;
+} mm_align_test;
+
+int main() {
+
+#if (defined (__GNUC__) && __GNUC__ >= 2)
+#define ZEND_MM_ALIGNMENT (__alignof__ (mm_align_test))
+#else
+#define ZEND_MM_ALIGNMENT (sizeof(mm_align_test))
+#endif
+
+int i = ZEND_MM_ALIGNMENT;
+int zeros = 0;
+FILE *f = fopen("conftest.zend", "w");
+
+while (i & ~0x1) {
+ zeros++;
+ i = i >> 1;
+}
+
+fprintf(f, "%d %d", ZEND_MM_ALIGNMENT, zeros);
+
+ exit(0);
+}],zend_mm_test=true,zend_mm_test=false,zend_mm_test=false)
+
+if test $zend_mm_test = true; then
+
+ LIBZEND_MM_ALIGN=`cat ./conftest.zend | cut -d ' ' -f 1`
+ LIBZEND_MM_ALIGN_LOG2=`cat ./conftest.zend | cut -d ' ' -f 2`
+
+ AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT, $LIBZEND_MM_ALIGN, [ ])
+ AC_DEFINE_UNQUOTED(ZEND_MM_ALIGNMENT_LOG2, $LIBZEND_MM_ALIGN_LOG2, [ ])
+fi;
+
+AC_MSG_RESULT(done)
#define MAX(a, b) (((a)>(b))?(a):(b))
#endif
+#if 0
/* Platform alignment test */
typedef union _mm_align_test {
void *ptr;
/* We're going to need some kind of configure test for this */
#undef ZEND_MM_ALIGNMENT
#define ZEND_MM_ALIGNMENT 8
+#endif
#define ZEND_MM_ALIGNMENT_MASK ~(ZEND_MM_ALIGNMENT-1)