Mercurial > hg > batch-feature-extraction-tool
view Lib/fftw-3.2.1/m4/ax_gcc_aligns_stack.m4 @ 1:e86e9c111b29
Updates stuff that potentially fixes the memory leak and also makes it work on Windows and Linux (Need to test). Still have to fix fftw include for linux in Jucer.
author | David Ronan <d.m.ronan@qmul.ac.uk> |
---|---|
date | Thu, 09 Jul 2015 15:01:32 +0100 |
parents | 25bf17994ef1 |
children |
line wrap: on
line source
dnl @synopsis AX_GCC_ALIGNS_STACK([ACTION-IF-YES], [ACTION-IF-NO]) dnl @summary check whether gcc can align stack to 8-byte boundary dnl @category Misc dnl dnl Check to see if we are using a version of gcc that aligns the stack dnl (true in gcc-2.95+, which have the -mpreferred-stack-boundary flag). dnl Also, however, checks whether main() is correctly aligned by the dnl OS/libc/..., as well as for a bug in the stack alignment of gcc-2.95.x dnl (see http://gcc.gnu.org/ml/gcc-bugs/1999-11/msg00259.html). dnl dnl ACTION-IF-YES/ACTION-IF-NO are shell commands to execute if we are dnl using gcc and the stack is/isn't aligned, respectively. dnl dnl Requires macro: AX_CHECK_COMPILER_FLAGS, AX_GCC_VERSION dnl dnl @version 2005-05-30 dnl @license GPLWithACException dnl @author Steven G. Johnson <stevenj@alum.mit.edu> AC_DEFUN([AX_GCC_ALIGNS_STACK], [ AC_REQUIRE([AC_PROG_CC]) ax_gcc_aligns_stack=no if test "$GCC" = "yes"; then AX_CHECK_COMPILER_FLAGS(-mpreferred-stack-boundary=4, [ AC_MSG_CHECKING([whether the stack is at least 8-byte aligned by gcc]) save_CFLAGS="$CFLAGS" CFLAGS="-O" AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double") AC_TRY_RUN([#include <stdlib.h> # include <stdio.h> struct yuck { int blechh; }; int one(void) { return 1; } struct yuck ick(void) { struct yuck y; y.blechh = 3; return y; } # define CHK_ALIGN(x) if ((((long) &(x)) & 0x7)) { fprintf(stderr, "bad alignment of " #x "\n"); exit(1); } void blah(int foo) { double foobar; CHK_ALIGN(foobar); } int main2(void) {double ok1; struct yuck y; double ok2; CHK_ALIGN(ok1); CHK_ALIGN(ok2); y = ick(); blah(one()); return 0;} int main(void) { if ((((long) (__builtin_alloca(0))) & 0x7)) __builtin_alloca(4); return main2(); } ], [ax_gcc_aligns_stack=yes; ax_gcc_stack_align_bug=no], ax_gcc_stack_align_bug=yes, [AX_GCC_VERSION(3,0,0, ax_gcc_stack_align_bug=no, ax_gcc_stack_align_bug=yes)]) CFLAGS="$save_CFLAGS" AC_MSG_RESULT($ax_gcc_aligns_stack) ]) fi if test "$ax_gcc_aligns_stack" = yes; then m4_default([$1], :) else m4_default([$2], :) fi ])