diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d8683fbd26ee2bca3c93423bce21fb8ee9a18cc9..0b0ef57d94e4d9d8644f7d869212adcbf7b49386 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2006-09-22 Geoffrey Keating <geoffk@apple.com> + * config/i386/driver-i386.c: Always define host_detect_local_cpu. + * config/i386/i386.h: Define EXTRA_SPEC_FUNCTIONS on any i386 + or x86_64 host. Define HAVE_LOCAL_CPU_DETECT. + (CC1_CPU_SPEC): Make conditional on HAVE_LOCAL_CPU_DETECT rather + than replicating condition above. + * config.host (i[34567]86-*-*): Always use driver-i386.o. + * config/darwin.h (LINK_SYSROOT_SPEC): New. (LINK_SPEC): If TARGET_SYSTEM_ROOT is defined, pass it to the linker by default. diff --git a/gcc/config.host b/gcc/config.host index b36066f44e5bbcc292ee4f83f0d89f5f8a3782c3..4547864d9c113cd541c0ddd7ee6cd5ef52d827a5 100644 --- a/gcc/config.host +++ b/gcc/config.host @@ -97,11 +97,8 @@ esac case ${host} in i[34567]86-*-* \ | x86_64-*-* ) - # include the support for -march=native only when not cross compiling - if test x${host} = x${target} ; then - host_extra_gcc_objs="driver-i386.o" - host_xmake_file="${host_xmake_file} i386/x-i386" - fi + host_extra_gcc_objs="driver-i386.o" + host_xmake_file="${host_xmake_file} i386/x-i386" ;; esac diff --git a/gcc/config/i386/driver-i386.c b/gcc/config/i386/driver-i386.c index f13abd11dc5e6decc1c808d5e47a3d512b527e6d..979a6a5025dc1be14e2c892ba06e57ecbc798a38 100644 --- a/gcc/config/i386/driver-i386.c +++ b/gcc/config/i386/driver-i386.c @@ -22,11 +22,6 @@ Boston, MA 02110-1301, USA. */ #include "system.h" #include <stdlib.h> -#ifndef CROSS_COMPILE -/* This file shouldn't even be included in a cross compiler, but - let's be sure. */ -extern const char *host_detect_local_cpu (int argc, const char **argv); - #ifdef GCC_VERSION #define cpuid(num,a,b,c,d) \ asm volatile ("xchgl %%ebx, %1; cpuid; xchgl %%ebx, %1" \ @@ -170,5 +165,4 @@ const char *host_detect_local_cpu (int argc, const char **argv) { return concat ("-m", argv[0], "=i386", NULL); } -#endif -#endif +#endif /* GCC_VERSION */ diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index f2e6ce06a960dba2a4ad22d3dc15232cd5f24790..4993a94f5ce5d277da5aa1be3295ffa1966d7f76 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -274,12 +274,15 @@ extern int x86_prefetch_sse; #define OPTIMIZATION_OPTIONS(LEVEL, SIZE) \ optimization_options ((LEVEL), (SIZE)) -/* -march=native handling only makes sense with a native compiler. */ -#ifndef CROSS_COMPILE +/* -march=native handling only makes sense with compiler running on + an x86 or x86_64 chip. If changing this condition, also change + the condition in driver-i386.c. */ +#if defined(__i386__) || defined(__x86_64__) /* In driver-i386.c. */ extern const char *host_detect_local_cpu (int argc, const char **argv); #define EXTRA_SPEC_FUNCTIONS \ { "local_cpu_detect", host_detect_local_cpu }, +#define HAVE_LOCAL_CPU_DETECT #endif /* Support for configure-time defaults of some command line options. @@ -311,7 +314,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv); %{mno-intel-syntax:-masm=att \ %n`-mno-intel-syntax' is deprecated. Use `-masm=att' instead.\n}" -#ifdef CROSS_COMPILE +#ifndef HAVE_LOCAL_CPU_DETECT #define CC1_CPU_SPEC CC1_CPU_SPEC_1 #else #define CC1_CPU_SPEC CC1_CPU_SPEC_1 \