On Fri, Mar 30, 2012 at 11:32:37AM -0700, H.J. Lu wrote:
> On Fri, Mar 30, 2012 at 11:05 AM, Jack Howarth <[email protected]>
> wrote:
> > 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
> >> <[email protected]> wrote:
> >> > Mike Stump <[email protected]> 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
> >
>
> Here is a smaller patch.
H.J.,
The smaller patch also solves the bootstrap failure on i386-apple-darwin10.
Jack
>
>
> --
> H.J.
> 2012-03-30 H.J. Lu <[email protected]>
>
> PR bootstrap/52784
> * 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_64BIT_DEFAULT is 0.
>
> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index 42746e4..3905287 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -3117,11 +3117,13 @@ 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_64BIT_DEFAULT
> + /* When TARGET_64BIT_DEFAULT isn't defined, 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