On Fri, Mar 30, 2012 at 09:18:13AM -0700, H.J. Lu wrote: > On Fri, Mar 30, 2012 at 8:11 AM, Rainer Orth > <r...@cebitec.uni-bielefeld.de> wrote: > > Mike Stump <mikest...@comcast.net> writes: > > > >>> Here is the new patch. OK for trunk if there are no regressions on > >>> Linux/ia32 and Linux/x86-64? > >> > >> Too bad you didn't test 32-bit darwin, causes: > >> > >> http://gcc.gnu.org/PR52784 > >> > >> Could you please revert or fix, thanks. > > > > Same problem on Solaris 10 and 11/x86. > > > > Rainer > > > > When i[34567]86-*-* targets are configured with --enable-targets=all, > TARGET_BI_ARCH is defined as 1, but TARGET_64BIT_DEFAULT > isn't defined. It leads to > > if (!TARGET_64BIT) > ix86_isa_flags &= ~(OPTION_MASK_ABI_64 | OPTION_MASK_ABI_X32); > > Since TARGET_64BIT is false by default, -m64 and -mx32 don't work > correctly. This patch changes TARGET_BI_ARCH to 3 for > i[34567]86-*-* targets configured with --enable-targets=all. Tested on > Linux/ia32 with bootstrap and Linux/ia32 with --enable-targets=all > --disable-bootstrap. Please try on other OSes.
H.J., This patch solves the bootstrap of current gcc trunk on i386-apple-darwin10. Thanks. Jack > > Thanks. > > > -- > H.J. > --- > 2012-03-30 H.J. Lu <hongjiu...@intel.com> > > PR bootstrap/52784 > * config.gcc (tm_defines): Replace TARGET_BI_ARCH=1 with > TARGET_BI_ARCH=3 for i[34567]86-*-* targets. > > * config/i386/i386.c (ix86_option_override_internal): Don't > check OPTION_MASK_ABI_64 nor OPTION_MASK_ABI_X32 if > TARGET_BI_ARCH isn't defined or TARGET_BI_ARCH == 3. > 2012-03-30 H.J. Lu <hongjiu...@intel.com> > > PR bootstrap/52784 > * config.gcc (tm_defines): Replace TARGET_BI_ARCH=1 with > TARGET_BI_ARCH=3 for i[34567]86-*-* targets. > > * config/i386/i386.c (ix86_option_override_internal): Don't > check OPTION_MASK_ABI_64 nor OPTION_MASK_ABI_X32 if > TARGET_BI_ARCH isn't defined or TARGET_BI_ARCH == 3. > > diff --git a/gcc/config.gcc b/gcc/config.gcc > index c30bb24..d1e0480 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -1208,7 +1208,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | > i[34567]86-*-knetbsd*-gnu | i > default_gnu_indirect_function=yes > if test x$enable_targets = xall; then > tm_file="${tm_file} i386/x86-64.h i386/gnu-user64.h > i386/linux64.h" > - tm_defines="${tm_defines} TARGET_BI_ARCH=1" > + tm_defines="${tm_defines} TARGET_BI_ARCH=3" > tmake_file="${tmake_file} i386/t-linux64" > x86_multilibs="${with_multilib_list}" > if test "$x86_multilibs" = "default"; then > @@ -1338,7 +1338,7 @@ i[34567]86-*-solaris2* | x86_64-*-solaris2.1[0-9]*) > case ${target} in > *-*-solaris2.1[0-9]*) > tm_file="${tm_file} i386/x86-64.h i386/sol2-bi.h sol2-bi.h" > - tm_defines="${tm_defines} TARGET_BI_ARCH=1" > + tm_defines="${tm_defines} TARGET_BI_ARCH=3" > tmake_file="$tmake_file i386/t-sol2-64" > need_64bit_isa=yes > case X"${with_cpu}" in > @@ -1406,7 +1406,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) > user_headers_inc_next_pre="${user_headers_inc_next_pre} > stddef.h stdarg.h" > tm_file="${tm_file} i386/mingw-w64.h" > if test x$enable_targets = xall; then > - tm_defines="${tm_defines} TARGET_BI_ARCH=1" > + tm_defines="${tm_defines} TARGET_BI_ARCH=3" > case X"${with_cpu}" in > > Xgeneric|Xatom|Xcore2|Xcorei7|Xcorei7-avx|Xnocona|Xx86-64|Xbdver2|Xbdver1|Xbtver1|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3) > ;; > diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c > index 42746e4..62ed2c0 100644 > --- a/gcc/config/i386/i386.c > +++ b/gcc/config/i386/i386.c > @@ -3117,11 +3117,14 @@ ix86_option_override_internal (bool main_args_p) > SUBSUBTARGET_OVERRIDE_OPTIONS; > #endif > > - /* Turn off both OPTION_MASK_ABI_64 and OPTION_MASK_ABI_X32 if > - TARGET_64BIT is false. */ > +#if defined TARGET_BI_ARCH && TARGET_BI_ARCH != 3 > + /* When TARGET_BI_ARCH isn't defined or TARGET_BI_ARCH == 3, > + TARGET_64BIT is false by default and there is no need to check > + OPTION_MASK_ABI_64 nor OPTION_MASK_ABI_X32. Turn off both > + OPTION_MASK_ABI_64 and OPTION_MASK_ABI_X32 if TARGET_64BIT is > + false. */ > if (!TARGET_64BIT) > ix86_isa_flags &= ~(OPTION_MASK_ABI_64 | OPTION_MASK_ABI_X32); > -#ifdef TARGET_BI_ARCH > else > { > #if TARGET_BI_ARCH == 1