This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: Add OPTION_MASK_ISA_X86_64 and support TARGET_BI_ARCH == 2
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 <howarth@bromo.med.uc.edu> 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
> >> <ro@cebitec.uni-bielefeld.de> wrote:
> >> > Mike Stump <mikestump@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
> >
>
> 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 <hongjiu.lu@intel.com>
>
> 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