[llvm-commits] [llvm] r72140 - in /llvm/trunk: autoconf/configure.ac configure include/llvm/System/Atomic.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue May 19 23:58:29 PDT 2009


Great, it's working now on my machine. Thanks Owen for fixing the 
problem that quickly!

Nicolas

Owen Anderson wrote:
> Author: resistor
> Date: Tue May 19 17:18:56 2009
> New Revision: 72140
>
> URL: http://llvm.org/viewvc/llvm-project?rev=72140&view=rev
> Log:
> Split the ENABLE_THREADS #define in two.  Now ENABLE_THREADS indicates the ability to run multiple threads at once in the JIT, and requires only
> mutex support.  LLVM_MULTITHREADED indicates (or will indicate) the ability to run LLVM itself across multiple threads, and requires atomics support.
>
> Modified:
>     llvm/trunk/autoconf/configure.ac
>     llvm/trunk/configure
>     llvm/trunk/include/llvm/System/Atomic.h
>
> Modified: llvm/trunk/autoconf/configure.ac
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=72140&r1=72139&r2=72140&view=diff
>
> ==============================================================================
> --- llvm/trunk/autoconf/configure.ac (original)
> +++ llvm/trunk/autoconf/configure.ac Tue May 19 17:18:56 2009
> @@ -372,6 +372,7 @@
>    default) AC_SUBST(ENABLE_THREADS,[1]) ;;
>    *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
>  esac
> +AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
>  
>  dnl Allow building without position independent code
>  AC_ARG_ENABLE(pic,
> @@ -897,24 +898,22 @@
>  fi
>  
>  dnl atomic builtins are required for threading support.
> -if test "$ENABLE_THREADS" -eq 1 ; then
> -  AC_MSG_CHECKING(for GCC atomic builtins)
> -  AC_LINK_IFELSE(
> -	AC_LANG_SOURCE(
> -          [[int main() { 
> -              volatile unsigned long val = 1;
> -              __sync_synchronize();
> -              __sync_val_compare_and_swap(&val, 1, 0);
> -              return 0;
> -            }
> -          ]]),
> -        AC_MSG_RESULT(yes),
> -        AC_MSG_RESULT(no)
> -        AC_SUBST(ENABLE_THREADS, [0])
> -        AC_MSG_WARN([Threading support disabled because atomic builtins are missing]))
> -fi
> +AC_MSG_CHECKING(for GCC atomic builtins)
> +AC_LINK_IFELSE(
> +  AC_LANG_SOURCE(
> +    [[int main() { 
> +        volatile unsigned long val = 1;
> +        __sync_synchronize();
> +        __sync_val_compare_and_swap(&val, 1, 0);
> +        return 0;
> +      }
> +    ]]),
> +  AC_MSG_RESULT(yes)
> +  AC_DEFINE(LLVM_MULTITHREADED, 1, Build multithreading support into LLVM),
> +  AC_MSG_RESULT(no)
> +  AC_DEFINE(LLVM_MULTITHREADED, 0, Build multithreading support into LLVM)
> +  AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]))
>  
> -AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
>  
>  dnl===-----------------------------------------------------------------------===
>  dnl===
>
> Modified: llvm/trunk/configure
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=72140&r1=72139&r2=72140&view=diff
>
> ==============================================================================
> --- llvm/trunk/configure (original)
> +++ llvm/trunk/configure Tue May 19 17:18:56 2009
> @@ -4870,6 +4870,11 @@
>     { (exit 1); exit 1; }; } ;;
>  esac
>  
> +cat >>confdefs.h <<_ACEOF
> +#define ENABLE_THREADS $ENABLE_THREADS
> +_ACEOF
> +
> +
>  # Check whether --enable-pic was given.
>  if test "${enable_pic+set}" = set; then
>    enableval=$enable_pic;
> @@ -10570,7 +10575,7 @@
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<EOF
> -#line 10573 "configure"
> +#line 10578 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -12714,7 +12719,7 @@
>    ;;
>  *-*-irix6*)
>    # Find out which ABI we are using.
> -  echo '#line 12717 "configure"' > conftest.$ac_ext
> +  echo '#line 12722 "configure"' > conftest.$ac_ext
>    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
>    (eval $ac_compile) 2>&5
>    ac_status=$?
> @@ -14432,11 +14437,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:14435: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:14440: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:14439: \$? = $ac_status" >&5
> +   echo "$as_me:14444: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -14700,11 +14705,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:14703: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:14708: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:14707: \$? = $ac_status" >&5
> +   echo "$as_me:14712: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -14804,11 +14809,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:14807: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:14812: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>out/conftest.err)
>     ac_status=$?
>     cat out/conftest.err >&5
> -   echo "$as_me:14811: \$? = $ac_status" >&5
> +   echo "$as_me:14816: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s out/conftest2.$ac_objext
>     then
>       # The compiler can only warn and ignore the option if not recognized
> @@ -17256,7 +17261,7 @@
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<EOF
> -#line 17259 "configure"
> +#line 17264 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -17356,7 +17361,7 @@
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<EOF
> -#line 17359 "configure"
> +#line 17364 "configure"
>  #include "confdefs.h"
>  
>  #if HAVE_DLFCN_H
> @@ -19724,11 +19729,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:19727: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:19732: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:19731: \$? = $ac_status" >&5
> +   echo "$as_me:19736: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -19828,11 +19833,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:19831: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:19836: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>out/conftest.err)
>     ac_status=$?
>     cat out/conftest.err >&5
> -   echo "$as_me:19835: \$? = $ac_status" >&5
> +   echo "$as_me:19840: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s out/conftest2.$ac_objext
>     then
>       # The compiler can only warn and ignore the option if not recognized
> @@ -21398,11 +21403,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:21401: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:21406: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:21405: \$? = $ac_status" >&5
> +   echo "$as_me:21410: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -21502,11 +21507,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:21505: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:21510: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>out/conftest.err)
>     ac_status=$?
>     cat out/conftest.err >&5
> -   echo "$as_me:21509: \$? = $ac_status" >&5
> +   echo "$as_me:21514: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s out/conftest2.$ac_objext
>     then
>       # The compiler can only warn and ignore the option if not recognized
> @@ -23737,11 +23742,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:23740: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:23745: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:23744: \$? = $ac_status" >&5
> +   echo "$as_me:23749: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -24005,11 +24010,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:24008: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:24013: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>conftest.err)
>     ac_status=$?
>     cat conftest.err >&5
> -   echo "$as_me:24012: \$? = $ac_status" >&5
> +   echo "$as_me:24017: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s "$ac_outfile"; then
>       # The compiler can only warn and ignore the option if not recognized
>       # So say no if there are warnings other than the usual output.
> @@ -24109,11 +24114,11 @@
>     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
>     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
>     -e 's:$: $lt_compiler_flag:'`
> -   (eval echo "\"\$as_me:24112: $lt_compile\"" >&5)
> +   (eval echo "\"\$as_me:24117: $lt_compile\"" >&5)
>     (eval "$lt_compile" 2>out/conftest.err)
>     ac_status=$?
>     cat out/conftest.err >&5
> -   echo "$as_me:24116: \$? = $ac_status" >&5
> +   echo "$as_me:24121: \$? = $ac_status" >&5
>     if (exit $ac_status) && test -s out/conftest2.$ac_objext
>     then
>       # The compiler can only warn and ignore the option if not recognized
> @@ -33602,21 +33607,20 @@
>    fi
>  fi
>  
> -if test "$ENABLE_THREADS" -eq 1 ; then
> -  { echo "$as_me:$LINENO: checking for GCC atomic builtins" >&5
> +{ echo "$as_me:$LINENO: checking for GCC atomic builtins" >&5
>  echo $ECHO_N "checking for GCC atomic builtins... $ECHO_C" >&6; }
> -  cat >conftest.$ac_ext <<_ACEOF
> +cat >conftest.$ac_ext <<_ACEOF
>  /* confdefs.h.  */
>  _ACEOF
>  cat confdefs.h >>conftest.$ac_ext
>  cat >>conftest.$ac_ext <<_ACEOF
>  /* end confdefs.h.  */
>  int main() {
> -              volatile unsigned long val = 1;
> -              __sync_synchronize();
> -              __sync_val_compare_and_swap(&val, 1, 0);
> -              return 0;
> -            }
> +        volatile unsigned long val = 1;
> +        __sync_synchronize();
> +        __sync_val_compare_and_swap(&val, 1, 0);
> +        return 0;
> +      }
>  
>  _ACEOF
>  rm -f conftest.$ac_objext conftest$ac_exeext
> @@ -33655,26 +33659,28 @@
>    (exit $ac_status); }; }; then
>    { echo "$as_me:$LINENO: result: yes" >&5
>  echo "${ECHO_T}yes" >&6; }
> +
> +cat >>confdefs.h <<\_ACEOF
> +#define LLVM_MULTITHREADED 1
> +_ACEOF
> +
>  else
>    echo "$as_me: failed program was:" >&5
>  sed 's/^/| /' conftest.$ac_ext >&5
>  
>  	{ echo "$as_me:$LINENO: result: no" >&5
>  echo "${ECHO_T}no" >&6; }
> -        ENABLE_THREADS=0
>  
> -        { echo "$as_me:$LINENO: WARNING: Threading support disabled because atomic builtins are missing" >&5
> -echo "$as_me: WARNING: Threading support disabled because atomic builtins are missing" >&2;}
> +cat >>confdefs.h <<\_ACEOF
> +#define LLVM_MULTITHREADED 0
> +_ACEOF
> +
> +  { echo "$as_me:$LINENO: WARNING: LLVM will be built thread-unsafe because atomic builtins are missing" >&5
> +echo "$as_me: WARNING: LLVM will be built thread-unsafe because atomic builtins are missing" >&2;}
>  fi
>  
>  rm -f core conftest.err conftest.$ac_objext \
>        conftest$ac_exeext conftest.$ac_ext
> -fi
> -
> -
> -cat >>confdefs.h <<_ACEOF
> -#define ENABLE_THREADS $ENABLE_THREADS
> -_ACEOF
>  
>  
>  
>
> Modified: llvm/trunk/include/llvm/System/Atomic.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/System/Atomic.h?rev=72140&r1=72139&r2=72140&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/System/Atomic.h (original)
> +++ llvm/trunk/include/llvm/System/Atomic.h Tue May 19 17:18:56 2009
> @@ -23,14 +23,8 @@
>    namespace sys {
>      
>      inline void MemoryFence() {
> -#if !defined(ENABLE_THREADS) || ENABLE_THREADS == 0
> -#  if defined(__GNUC__)
> -      __asm__ __volatile__("" : : : "memory");
> -#  elif defined(_MSC_VER)
> -      __asm { };
> -#  else
> -#    error No memory fence implementation for your platform!
> -#  endif
> +#if LLVM_MULTITHREADED==0
> +      return;
>  #else
>  #  if defined(__GNUC__)
>        __sync_synchronize();
> @@ -42,7 +36,7 @@
>  #endif
>  }
>  
> -#if !defined(ENABLE_THREADS) || ENABLE_THREADS == 0
> +#if LLVM_MULTITHREADED==0
>      typedef unsigned long cas_flag;
>      template<typename T>
>      inline T CompareAndSwap(volatile T* dest,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>   




More information about the llvm-commits mailing list