Author: baldrick Date: Wed Dec 12 17:03:45 2007 New Revision: 44959 URL: http://llvm.org/viewvc/llvm-project?rev=44959&view=rev Log: Remove host endianness info from TargetData and put it in a new header System/Host.h instead. Instead of getting the endianness from configure, calculate it directly.
Added: llvm/trunk/include/llvm/System/Host.h Modified: llvm/trunk/autoconf/configure.ac llvm/trunk/configure llvm/trunk/include/llvm/Config/config.h.in llvm/trunk/include/llvm/Target/TargetData.h llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp llvm/trunk/lib/Target/TargetData.cpp Modified: llvm/trunk/autoconf/configure.ac URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/autoconf/configure.ac (original) +++ llvm/trunk/autoconf/configure.ac Wed Dec 12 17:03:45 2007 @@ -227,10 +227,7 @@ AC_SUBST(ARCH,$llvm_cv_target_arch) dnl Check for the endianness of the target -AC_C_BIGENDIAN([AC_SUBST([ENDIAN],[big]), - AC_DEFINE([MSB_FIRST], [1], [Define if this target is big endian])], - [AC_SUBST([ENDIAN],[little]), - AC_DEFINE([LSB_FIRST], [1], [Define if this target is little endian])]) +AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little])) dnl Check for build platform executable suffix if we're crosscompiling if test "$cross_compiling" = yes; then Modified: llvm/trunk/configure URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/configure (original) +++ llvm/trunk/configure Wed Dec 12 17:03:45 2007 @@ -828,6 +828,7 @@ LLVM_ON_UNIX LLVM_ON_WIN32 ARCH +ENDIAN CC CFLAGS LDFLAGS @@ -838,7 +839,6 @@ CPP GREP EGREP -ENDIAN LLVM_CROSS_COMPILING BUILD_CC BUILD_EXEEXT @@ -4183,19 +4183,9 @@ case $ac_cv_c_bigendian in yes) ENDIAN=big -, - -cat >>confdefs.h <<\_ACEOF -#define MSB_FIRST 1 -_ACEOF ;; no) ENDIAN=little -, - -cat >>confdefs.h <<\_ACEOF -#define LSB_FIRST 1 -_ACEOF ;; *) { { echo "$as_me:$LINENO: error: unknown endianness @@ -9881,7 +9871,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 9884 "configure" +#line 9874 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11816,7 +11806,7 @@ ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 11819 "configure"' > conftest.$ac_ext + echo '#line 11809 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -13456,11 +13446,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:13459: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13449: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13463: \$? = $ac_status" >&5 + echo "$as_me:13453: \$? = $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. @@ -13724,11 +13714,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:13727: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13717: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:13731: \$? = $ac_status" >&5 + echo "$as_me:13721: \$? = $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. @@ -13828,11 +13818,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:13831: $lt_compile\"" >&5) + (eval echo "\"\$as_me:13821: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:13835: \$? = $ac_status" >&5 + echo "$as_me:13825: \$? = $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 @@ -16136,7 +16126,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 16139 "configure" +#line 16129 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -16236,7 +16226,7 @@ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<EOF -#line 16239 "configure" +#line 16229 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18572,11 +18562,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:18575: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18565: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18579: \$? = $ac_status" >&5 + echo "$as_me:18569: \$? = $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. @@ -18676,11 +18666,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:18679: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18669: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18683: \$? = $ac_status" >&5 + echo "$as_me:18673: \$? = $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 @@ -20246,11 +20236,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:20249: $lt_compile\"" >&5) + (eval echo "\"\$as_me:20239: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:20253: \$? = $ac_status" >&5 + echo "$as_me:20243: \$? = $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. @@ -20350,11 +20340,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:20353: $lt_compile\"" >&5) + (eval echo "\"\$as_me:20343: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:20357: \$? = $ac_status" >&5 + echo "$as_me:20347: \$? = $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 @@ -22553,11 +22543,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:22556: $lt_compile\"" >&5) + (eval echo "\"\$as_me:22546: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22560: \$? = $ac_status" >&5 + echo "$as_me:22550: \$? = $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. @@ -22821,11 +22811,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:22824: $lt_compile\"" >&5) + (eval echo "\"\$as_me:22814: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:22828: \$? = $ac_status" >&5 + echo "$as_me:22818: \$? = $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. @@ -22925,11 +22915,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:22928: $lt_compile\"" >&5) + (eval echo "\"\$as_me:22918: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:22932: \$? = $ac_status" >&5 + echo "$as_me:22922: \$? = $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 @@ -32769,6 +32759,7 @@ LLVM_ON_UNIX!$LLVM_ON_UNIX$ac_delim LLVM_ON_WIN32!$LLVM_ON_WIN32$ac_delim ARCH!$ARCH$ac_delim +ENDIAN!$ENDIAN$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim @@ -32779,7 +32770,6 @@ CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim -ENDIAN!$ENDIAN$ac_delim LLVM_CROSS_COMPILING!$LLVM_CROSS_COMPILING$ac_delim BUILD_CC!$BUILD_CC$ac_delim BUILD_EXEEXT!$BUILD_EXEEXT$ac_delim Modified: llvm/trunk/include/llvm/Config/config.h.in URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Config/config.h.in?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/include/llvm/Config/config.h.in (original) +++ llvm/trunk/include/llvm/Config/config.h.in Wed Dec 12 17:03:45 2007 @@ -494,9 +494,6 @@ /* Installation prefix directory */ #undef LLVM_PREFIX -/* Define if this target is little endian */ -#undef LSB_FIRST - /* Define if the OS needs help to load dependent libraries for dlopen(). */ #undef LTDL_DLOPEN_DEPLIBS @@ -514,9 +511,6 @@ /* Define to the system default library search path. */ #undef LTDL_SYSSEARCHPATH -/* Define if this target is big endian */ -#undef MSB_FIRST - /* Define if /dev/zero should be used when mapping RWX memory, or undefine if its not necessary */ #undef NEED_DEV_ZERO_FOR_MMAP Added: llvm/trunk/include/llvm/System/Host.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/System/Host.h?rev=44959&view=auto ============================================================================== --- llvm/trunk/include/llvm/System/Host.h (added) +++ llvm/trunk/include/llvm/System/Host.h Wed Dec 12 17:03:45 2007 @@ -0,0 +1,36 @@ +//===- llvm/System/Host.h - Host machine characteristics --------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by Duncan Sands and is distributed under the +// University of Illinois Open Source License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Methods for querying the nature of the host machine. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SYSTEM_HOST_H +#define LLVM_SYSTEM_HOST_H + +namespace llvm { +namespace sys { + + inline bool littleEndianHost() { + union { + int i; + char c; + }; + i = 1; + return c; + } + + inline bool bigEndianHost() { + return !littleEndianHost(); + } + +} +} + +#endif Modified: llvm/trunk/include/llvm/Target/TargetData.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetData.h?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/include/llvm/Target/TargetData.h (original) +++ llvm/trunk/include/llvm/Target/TargetData.h Wed Dec 12 17:03:45 2007 @@ -142,10 +142,6 @@ bool isLittleEndian() const { return LittleEndian; } bool isBigEndian() const { return !LittleEndian; } - /// Host endianness. - bool hostIsLittleEndian() const; - bool hostIsBigEndian() const { return !hostIsLittleEndian(); } - /// getStringRepresentation - Return the string representation of the /// TargetData. This representation is in the same format accepted by the /// string constructor above. Modified: llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp (original) +++ llvm/trunk/lib/ExecutionEngine/ExecutionEngine.cpp Wed Dec 12 17:03:45 2007 @@ -23,6 +23,7 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/MutexGuard.h" #include "llvm/System/DynamicLibrary.h" +#include "llvm/System/Host.h" #include "llvm/Target/TargetData.h" #include <math.h> using namespace llvm; @@ -637,7 +638,7 @@ uint8_t *Src = (uint8_t *)Val.IntVal.getRawData(); uint8_t *Dst = (uint8_t *)Ptr; - if (getTargetData()->hostIsLittleEndian()) + if (sys::littleEndianHost()) // Little-endian host - the source is ordered from LSB to MSB. // Order the destination from LSB to MSB: Do a straight copy. memcpy(Dst, Src, StoreBytes); @@ -698,7 +699,7 @@ uint8_t *Src = (uint8_t *)Ptr; uint8_t *Dst = (uint8_t *)Result.IntVal.getRawData(); - if (getTargetData()->hostIsLittleEndian()) + if (sys::littleEndianHost()) // Little-endian host - the destination must be ordered from LSB to MSB. // The source is ordered from LSB to MSB: Do a straight copy. memcpy(Dst, Src, LoadBytes); Modified: llvm/trunk/lib/Target/TargetData.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetData.cpp?rev=44959&r1=44958&r2=44959&view=diff ============================================================================== --- llvm/trunk/lib/Target/TargetData.cpp (original) +++ llvm/trunk/lib/Target/TargetData.cpp Wed Dec 12 17:03:45 2007 @@ -25,7 +25,6 @@ #include "llvm/Support/ManagedStatic.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringExtras.h" -#include "llvm/Config/config.h" #include <algorithm> #include <cstdlib> #include <sstream> @@ -133,14 +132,6 @@ // TargetData Class Implementation //===----------------------------------------------------------------------===// -bool TargetData::hostIsLittleEndian() const { -#ifdef LSB_FIRST - return true; -#else - return false; -#endif -} - /*! A TargetDescription string consists of a sequence of hyphen-delimited specifiers for target endianness, pointer size and alignments, and various _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits